mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
C#: Restore Windows dependencies when Windows Forms or WPF usage is detected
This commit is contained in:
@@ -69,6 +69,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
|||||||
args += " --force";
|
args += " --force";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (restoreSettings.TargetWindows)
|
||||||
|
{
|
||||||
|
args += " /p:EnableWindowsTargeting=true";
|
||||||
|
}
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
|||||||
IList<string> GetNugetFeedsFromFolder(string folderPath);
|
IList<string> GetNugetFeedsFromFolder(string folderPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? PathToNugetConfig = null, bool ForceReevaluation = false);
|
public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? PathToNugetConfig = null, bool ForceReevaluation = false, bool TargetWindows = false);
|
||||||
|
|
||||||
public partial record class RestoreResult(bool Success, IList<string> Output)
|
public partial record class RestoreResult(bool Success, IList<string> Output)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -225,10 +225,13 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
|||||||
var successCount = 0;
|
var successCount = 0;
|
||||||
var nugetSourceFailures = 0;
|
var nugetSourceFailures = 0;
|
||||||
var assets = new Assets(logger);
|
var assets = new Assets(logger);
|
||||||
|
|
||||||
|
var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf;
|
||||||
|
|
||||||
var projects = fileProvider.Solutions.SelectMany(solution =>
|
var projects = fileProvider.Solutions.SelectMany(solution =>
|
||||||
{
|
{
|
||||||
logger.LogInfo($"Restoring solution {solution}...");
|
logger.LogInfo($"Restoring solution {solution}...");
|
||||||
var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
|
var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, TargetWindows: isWindows));
|
||||||
if (res.Success)
|
if (res.Success)
|
||||||
{
|
{
|
||||||
successCount++;
|
successCount++;
|
||||||
@@ -258,6 +261,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
|||||||
var successCount = 0;
|
var successCount = 0;
|
||||||
var nugetSourceFailures = 0;
|
var nugetSourceFailures = 0;
|
||||||
ConcurrentBag<DependencyContainer> collectedDependencies = [];
|
ConcurrentBag<DependencyContainer> collectedDependencies = [];
|
||||||
|
|
||||||
|
var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf;
|
||||||
|
|
||||||
var sync = new object();
|
var sync = new object();
|
||||||
var projectGroups = projects.GroupBy(Path.GetDirectoryName);
|
var projectGroups = projects.GroupBy(Path.GetDirectoryName);
|
||||||
Parallel.ForEach(projectGroups, new ParallelOptions { MaxDegreeOfParallelism = DependencyManager.Threads }, projectGroup =>
|
Parallel.ForEach(projectGroups, new ParallelOptions { MaxDegreeOfParallelism = DependencyManager.Threads }, projectGroup =>
|
||||||
@@ -266,7 +272,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
|||||||
foreach (var project in projectGroup)
|
foreach (var project in projectGroup)
|
||||||
{
|
{
|
||||||
logger.LogInfo($"Restoring project {project}...");
|
logger.LogInfo($"Restoring project {project}...");
|
||||||
var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
|
var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, TargetWindows: isWindows));
|
||||||
assets.AddDependenciesRange(res.AssetsFilePaths);
|
assets.AddDependenciesRange(res.AssetsFilePaths);
|
||||||
lock (sync)
|
lock (sync)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Accessibility.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Forms.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.AccessControl.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.SystemEvents.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationCore.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero2.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.AeroLite.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Classic.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Luna.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Royale.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationUI.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/ReachFramework.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.CodeDom.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Configuration.ConfigurationManager.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Design.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.EventLog.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.PerformanceCounter.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.DirectoryServices.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Common.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Design.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.IO.Packaging.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Printing.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Resources.Extensions.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Pkcs.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.ProtectedData.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Xml.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Permissions.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Threading.AccessControl.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Controls.Ribbon.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Extensions.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.Editors.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Primitives.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Input.Manipulations.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Presentation.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Xaml.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClient.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClientSideProviders.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationProvider.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationTypes.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsBase.dll |
|
||||||
|
| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsFormsIntegration.dll |
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
| Project files on filesystem | 1.0 |
|
| Project files on filesystem | 1.0 |
|
||||||
| Reachable fallback Nuget feed count | 1.0 |
|
| Reachable fallback Nuget feed count | 1.0 |
|
||||||
| Resource extraction enabled | 0.0 |
|
| Resource extraction enabled | 0.0 |
|
||||||
| Restored .NET framework variants | 0.0 |
|
| Restored .NET framework variants | 1.0 |
|
||||||
| Restored projects through solution files | 0.0 |
|
| Restored projects through solution files | 0.0 |
|
||||||
| Solution files on filesystem | 0.0 |
|
| Solution files on filesystem | 0.0 |
|
||||||
| Source files generated | 1.0 |
|
| Source files generated | 1.0 |
|
||||||
| Source files on filesystem | 3.0 |
|
| Source files on filesystem | 3.0 |
|
||||||
| Successfully restored project files | 0.0 |
|
| Successfully restored project files | 1.0 |
|
||||||
| Successfully restored solution files | 0.0 |
|
| Successfully restored solution files | 0.0 |
|
||||||
| Unresolved references | 0.0 |
|
| Unresolved references | 0.0 |
|
||||||
| UseWPF set | 0.0 |
|
| UseWPF set | 0.0 |
|
||||||
|
|||||||
Reference in New Issue
Block a user