dependabot-nuget 0.240.0 → 0.242.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/helpers/build +45 -0
- data/helpers/lib/NuGetUpdater/.editorconfig +364 -0
- data/helpers/lib/NuGetUpdater/.gitignore +5 -0
- data/helpers/lib/NuGetUpdater/Directory.Build.props +10 -0
- data/helpers/lib/NuGetUpdater/Directory.Common.props +16 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.props +14 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.targets +7 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Packages.props +29 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Build.Tasks/NuGet.Build.Tasks.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/AssemblyMetadataExtractor.cs +203 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/NuGet.CommandLine.csproj +33 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Commands/NuGet.Commands.csproj +26 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Common/NuGet.Common.csproj +21 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Config +6 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Configuration/NuGet.Configuration.csproj +24 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Credentials/NuGet.Credentials.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.DependencyResolver.Core/NuGet.DependencyResolver.Core.csproj +22 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Frameworks/NuGet.Frameworks.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.LibraryModel/NuGet.LibraryModel.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.PackageManagement/NuGet.PackageManagement.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Packaging/NuGet.Packaging.csproj +28 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.ProjectModel/NuGet.ProjectModel.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Protocol/NuGet.Protocol.csproj +21 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Resolver/NuGet.Resolver.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Versioning/NuGet.Versioning.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/README.md +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +35 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +43 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/NuGetUpdater.Cli.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +31 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.FrameworkCheck.cs +42 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +323 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/NuGetUpdater.Cli.Test.csproj +24 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Dependency.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyType.cs +12 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/BuildFile.cs +97 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/DotNetToolsJsonBuildFile.cs +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +36 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +47 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/PackagesConfigBuildFile.cs +31 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/ProjectBuildFile.cs +94 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/XmlBuildFile.cs +14 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +39 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/FrameworkCompatibilityService.cs +73 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs +146 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +316 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectResolver.cs +87 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/ConfigurationFile.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +66 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +48 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +172 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/SdkPackageUpdater.cs +498 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateResult.cs +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +105 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/JsonHelper.cs +222 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/Logger.cs +24 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +460 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +69 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs +83 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/XmlExtensions.cs +124 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/DotNetToolsJsonBuildFileTests.cs +53 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +80 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/PackagesConfigBuildFileTests.cs +63 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/ProjectBuildFileTests.cs +154 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs +64 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/FrameworkCompatibilityServiceFacts.cs +122 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/SupportedFrameworkFacts.cs +68 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +36 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestExtensions.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackagesConfigUpdaterTests.cs +79 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorker.DirsProj.cs +201 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +147 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +225 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +217 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +94 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +938 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +2177 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/JsonHelperTests.cs +239 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +598 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterHelperTests.cs +179 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterTests.cs +238 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.sln +152 -0
- data/helpers/lib/NuGetUpdater/xunit.runner.json +4 -0
- data/lib/dependabot/nuget/metadata_finder.rb +4 -4
- metadata +91 -5
@@ -0,0 +1,598 @@
|
|
1
|
+
using System;
|
2
|
+
using System.Collections.Generic;
|
3
|
+
using System.Collections.Immutable;
|
4
|
+
using System.IO;
|
5
|
+
using System.Linq;
|
6
|
+
using System.Threading.Tasks;
|
7
|
+
|
8
|
+
using Xunit;
|
9
|
+
|
10
|
+
namespace NuGetUpdater.Core.Test.Utilities;
|
11
|
+
|
12
|
+
public class MSBuildHelperTests
|
13
|
+
{
|
14
|
+
public MSBuildHelperTests()
|
15
|
+
{
|
16
|
+
MSBuildHelper.RegisterMSBuild();
|
17
|
+
}
|
18
|
+
|
19
|
+
[Fact]
|
20
|
+
public void GetRootedValue_FindsValue()
|
21
|
+
{
|
22
|
+
// Arrange
|
23
|
+
var projectContents = """
|
24
|
+
<Project>
|
25
|
+
<PropertyGroup>
|
26
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
27
|
+
</PropertyGroup>
|
28
|
+
<ItemGroup>
|
29
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(PackageVersion1)" />
|
30
|
+
</ItemGroup>
|
31
|
+
</Project>
|
32
|
+
""";
|
33
|
+
var propertyInfo = new Dictionary<string, string>
|
34
|
+
{
|
35
|
+
{ "PackageVersion1", "1.1.1" },
|
36
|
+
};
|
37
|
+
|
38
|
+
// Act
|
39
|
+
var rootValue = MSBuildHelper.GetRootedValue(projectContents, propertyInfo);
|
40
|
+
|
41
|
+
// Assert
|
42
|
+
Assert.Equal("""
|
43
|
+
<Project>
|
44
|
+
<PropertyGroup>
|
45
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
46
|
+
</PropertyGroup>
|
47
|
+
<ItemGroup>
|
48
|
+
<PackageReference Include="Newtonsoft.Json" Version="1.1.1" />
|
49
|
+
</ItemGroup>
|
50
|
+
</Project>
|
51
|
+
""", rootValue);
|
52
|
+
}
|
53
|
+
|
54
|
+
[Fact(Timeout = 1000)]
|
55
|
+
public async Task GetRootedValue_DoesNotRecurseAsync()
|
56
|
+
{
|
57
|
+
// Arrange
|
58
|
+
var projectContents = """
|
59
|
+
<Project>
|
60
|
+
<PropertyGroup>
|
61
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
62
|
+
</PropertyGroup>
|
63
|
+
<ItemGroup>
|
64
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(PackageVersion1)" />
|
65
|
+
</ItemGroup>
|
66
|
+
</Project>
|
67
|
+
""";
|
68
|
+
var propertyInfo = new Dictionary<string, string>
|
69
|
+
{
|
70
|
+
{ "PackageVersion1", "$(PackageVersion2)" },
|
71
|
+
{ "PackageVersion2", "$(PackageVersion1)" }
|
72
|
+
};
|
73
|
+
// This is needed to make the timeout work. Without that we could get caugth in an infinite loop.
|
74
|
+
await Task.Delay(1);
|
75
|
+
|
76
|
+
// Act
|
77
|
+
var ex = Assert.Throws<InvalidDataException>(() => MSBuildHelper.GetRootedValue(projectContents, propertyInfo));
|
78
|
+
|
79
|
+
// Assert
|
80
|
+
Assert.Equal("Property 'PackageVersion1' has a circular reference.", ex.Message);
|
81
|
+
}
|
82
|
+
|
83
|
+
[Theory]
|
84
|
+
[MemberData(nameof(SolutionProjectPathTestData))]
|
85
|
+
public void ProjectPathsCanBeParsedFromSolutionFiles(string solutionContent, string[] expectedProjectSubPaths)
|
86
|
+
{
|
87
|
+
var solutionPath = Path.GetTempFileName();
|
88
|
+
var solutionDirectory = Path.GetDirectoryName(solutionPath)!;
|
89
|
+
try
|
90
|
+
{
|
91
|
+
File.WriteAllText(solutionPath, solutionContent);
|
92
|
+
var actualProjectSubPaths = MSBuildHelper.GetProjectPathsFromSolution(solutionPath).ToArray();
|
93
|
+
var expectedPaths = expectedProjectSubPaths.Select(path => Path.Combine(solutionDirectory, path)).ToArray();
|
94
|
+
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
|
95
|
+
{
|
96
|
+
// make the test happy when running on Windows
|
97
|
+
expectedPaths = expectedPaths.Select(p => p.Replace("/", "\\")).ToArray();
|
98
|
+
}
|
99
|
+
|
100
|
+
Assert.Equal(expectedPaths, actualProjectSubPaths);
|
101
|
+
}
|
102
|
+
finally
|
103
|
+
{
|
104
|
+
File.Delete(solutionPath);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
[Theory]
|
109
|
+
[InlineData("<Project><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup></Project>", "netstandard2.0", null)]
|
110
|
+
[InlineData("<Project><PropertyGroup><TargetFrameworks>netstandard2.0</TargetFrameworks></PropertyGroup></Project>", "netstandard2.0", null)]
|
111
|
+
[InlineData("<Project><PropertyGroup><TargetFrameworks> ; netstandard2.0 ; </TargetFrameworks></PropertyGroup></Project>", "netstandard2.0", null)]
|
112
|
+
[InlineData("<Project><PropertyGroup><TargetFrameworks>netstandard2.0 ; netstandard2.1 ; </TargetFrameworks></PropertyGroup></Project>", "netstandard2.0", "netstandard2.1")]
|
113
|
+
public void TfmsCanBeDeterminedFromProjectContents(string projectContents, string? expectedTfm1, string? expectedTfm2)
|
114
|
+
{
|
115
|
+
var projectPath = Path.GetTempFileName();
|
116
|
+
try
|
117
|
+
{
|
118
|
+
File.WriteAllText(projectPath, projectContents);
|
119
|
+
var expectedTfms = new[] { expectedTfm1, expectedTfm2 }.Where(tfm => tfm is not null).ToArray();
|
120
|
+
var buildFile = ProjectBuildFile.Open(Path.GetDirectoryName(projectPath)!, projectPath);
|
121
|
+
var actualTfms = MSBuildHelper.GetTargetFrameworkMonikers(ImmutableArray.Create(buildFile));
|
122
|
+
Assert.Equal(expectedTfms, actualTfms);
|
123
|
+
}
|
124
|
+
finally
|
125
|
+
{
|
126
|
+
File.Delete(projectPath);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
[Theory]
|
131
|
+
[MemberData(nameof(GetTopLevelPackageDependenyInfosTestData))]
|
132
|
+
public async Task TopLevelPackageDependenciesCanBeDetermined((string Path, string Content)[] buildFileContents, Dependency[] expectedTopLevelDependencies)
|
133
|
+
{
|
134
|
+
using var testDirectory = new TemporaryDirectory();
|
135
|
+
var buildFiles = new List<ProjectBuildFile>();
|
136
|
+
foreach (var (path, content) in buildFileContents)
|
137
|
+
{
|
138
|
+
var fullPath = Path.Combine(testDirectory.DirectoryPath, path);
|
139
|
+
await File.WriteAllTextAsync(fullPath, content);
|
140
|
+
buildFiles.Add(ProjectBuildFile.Parse(testDirectory.DirectoryPath, fullPath, content));
|
141
|
+
}
|
142
|
+
|
143
|
+
var actualTopLevelDependencies = MSBuildHelper.GetTopLevelPackageDependenyInfos(buildFiles.ToImmutableArray());
|
144
|
+
Assert.Equal(expectedTopLevelDependencies, actualTopLevelDependencies);
|
145
|
+
}
|
146
|
+
|
147
|
+
[Fact]
|
148
|
+
public async Task AllPackageDependenciesCanBeTraversed()
|
149
|
+
{
|
150
|
+
using var temp = new TemporaryDirectory();
|
151
|
+
var expectedDependencies = new Dependency[]
|
152
|
+
{
|
153
|
+
new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown),
|
154
|
+
new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown),
|
155
|
+
new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown),
|
156
|
+
new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
|
157
|
+
new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown),
|
158
|
+
new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown),
|
159
|
+
new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown),
|
160
|
+
new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown),
|
161
|
+
new("System.Buffers", "4.5.1", DependencyType.Unknown),
|
162
|
+
new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown),
|
163
|
+
new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown),
|
164
|
+
new("System.Memory", "4.5.5", DependencyType.Unknown),
|
165
|
+
new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown),
|
166
|
+
new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown),
|
167
|
+
new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown),
|
168
|
+
new("NETStandard.Library", "2.0.3", DependencyType.Unknown),
|
169
|
+
};
|
170
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", new[] { new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown) });
|
171
|
+
Assert.Equal(expectedDependencies, actualDependencies);
|
172
|
+
}
|
173
|
+
|
174
|
+
[Fact]
|
175
|
+
public async Task AllPackageDependencies_DoNotTruncateLongDependencyLists()
|
176
|
+
{
|
177
|
+
using var temp = new TemporaryDirectory();
|
178
|
+
var expectedDependencies = new Dependency[]
|
179
|
+
{
|
180
|
+
new("Castle.Core", "4.4.1", DependencyType.Unknown),
|
181
|
+
new("Microsoft.ApplicationInsights", "2.10.0", DependencyType.Unknown),
|
182
|
+
new("Microsoft.ApplicationInsights.Agent.Intercept", "2.4.0", DependencyType.Unknown),
|
183
|
+
new("Microsoft.ApplicationInsights.DependencyCollector", "2.10.0", DependencyType.Unknown),
|
184
|
+
new("Microsoft.ApplicationInsights.PerfCounterCollector", "2.10.0", DependencyType.Unknown),
|
185
|
+
new("Microsoft.ApplicationInsights.WindowsServer", "2.10.0", DependencyType.Unknown),
|
186
|
+
new("Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel", "2.10.0", DependencyType.Unknown),
|
187
|
+
new("Microsoft.AspNet.TelemetryCorrelation", "1.0.5", DependencyType.Unknown),
|
188
|
+
new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown),
|
189
|
+
new("Microsoft.Extensions.Caching.Abstractions", "1.0.0", DependencyType.Unknown),
|
190
|
+
new("Microsoft.Extensions.Caching.Memory", "1.0.0", DependencyType.Unknown),
|
191
|
+
new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown),
|
192
|
+
new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown),
|
193
|
+
new("Microsoft.Extensions.DiagnosticAdapter", "1.1.0", DependencyType.Unknown),
|
194
|
+
new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
|
195
|
+
new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown),
|
196
|
+
new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown),
|
197
|
+
new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown),
|
198
|
+
new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.Unknown),
|
199
|
+
new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown),
|
200
|
+
new("Moq", "4.16.1", DependencyType.Unknown),
|
201
|
+
new("MSTest.TestFramework", "2.1.0", DependencyType.Unknown),
|
202
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown),
|
203
|
+
new("System", "4.1.311.2", DependencyType.Unknown),
|
204
|
+
new("System.Buffers", "4.5.1", DependencyType.Unknown),
|
205
|
+
new("System.Collections.Concurrent", "4.3.0", DependencyType.Unknown),
|
206
|
+
new("System.Collections.Immutable", "1.3.0", DependencyType.Unknown),
|
207
|
+
new("System.Collections.NonGeneric", "4.3.0", DependencyType.Unknown),
|
208
|
+
new("System.Collections.Specialized", "4.3.0", DependencyType.Unknown),
|
209
|
+
new("System.ComponentModel", "4.3.0", DependencyType.Unknown),
|
210
|
+
new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown),
|
211
|
+
new("System.ComponentModel.Primitives", "4.3.0", DependencyType.Unknown),
|
212
|
+
new("System.ComponentModel.TypeConverter", "4.3.0", DependencyType.Unknown),
|
213
|
+
new("System.Core", "3.5.21022.801", DependencyType.Unknown),
|
214
|
+
new("System.Data.Common", "4.3.0", DependencyType.Unknown),
|
215
|
+
new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown),
|
216
|
+
new("System.Diagnostics.PerformanceCounter", "4.5.0", DependencyType.Unknown),
|
217
|
+
new("System.Diagnostics.StackTrace", "4.3.0", DependencyType.Unknown),
|
218
|
+
new("System.Dynamic.Runtime", "4.3.0", DependencyType.Unknown),
|
219
|
+
new("System.IO.FileSystem.Primitives", "4.3.0", DependencyType.Unknown),
|
220
|
+
new("System.Linq", "4.3.0", DependencyType.Unknown),
|
221
|
+
new("System.Linq.Expressions", "4.3.0", DependencyType.Unknown),
|
222
|
+
new("System.Memory", "4.5.5", DependencyType.Unknown),
|
223
|
+
new("System.Net.WebHeaderCollection", "4.3.0", DependencyType.Unknown),
|
224
|
+
new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown),
|
225
|
+
new("System.ObjectModel", "4.3.0", DependencyType.Unknown),
|
226
|
+
new("System.Private.DataContractSerialization", "4.3.0", DependencyType.Unknown),
|
227
|
+
new("System.Reflection.Emit", "4.3.0", DependencyType.Unknown),
|
228
|
+
new("System.Reflection.Emit.ILGeneration", "4.3.0", DependencyType.Unknown),
|
229
|
+
new("System.Reflection.Emit.Lightweight", "4.3.0", DependencyType.Unknown),
|
230
|
+
new("System.Reflection.Metadata", "1.4.1", DependencyType.Unknown),
|
231
|
+
new("System.Reflection.TypeExtensions", "4.3.0", DependencyType.Unknown),
|
232
|
+
new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown),
|
233
|
+
new("System.Runtime.InteropServices.RuntimeInformation", "4.3.0", DependencyType.Unknown),
|
234
|
+
new("System.Runtime.Numerics", "4.3.0", DependencyType.Unknown),
|
235
|
+
new("System.Runtime.Serialization.Json", "4.3.0", DependencyType.Unknown),
|
236
|
+
new("System.Runtime.Serialization.Primitives", "4.3.0", DependencyType.Unknown),
|
237
|
+
new("System.Security.Claims", "4.3.0", DependencyType.Unknown),
|
238
|
+
new("System.Security.Cryptography.OpenSsl", "4.3.0", DependencyType.Unknown),
|
239
|
+
new("System.Security.Cryptography.Primitives", "4.3.0", DependencyType.Unknown),
|
240
|
+
new("System.Security.Principal", "4.3.0", DependencyType.Unknown),
|
241
|
+
new("System.Text.RegularExpressions", "4.3.0", DependencyType.Unknown),
|
242
|
+
new("System.Threading", "4.3.0", DependencyType.Unknown),
|
243
|
+
new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown),
|
244
|
+
new("System.Threading.Thread", "4.3.0", DependencyType.Unknown),
|
245
|
+
new("System.Threading.ThreadPool", "4.3.0", DependencyType.Unknown),
|
246
|
+
new("System.Xml.ReaderWriter", "4.3.0", DependencyType.Unknown),
|
247
|
+
new("System.Xml.XDocument", "4.3.0", DependencyType.Unknown),
|
248
|
+
new("System.Xml.XmlDocument", "4.3.0", DependencyType.Unknown),
|
249
|
+
new("System.Xml.XmlSerializer", "4.3.0", DependencyType.Unknown),
|
250
|
+
new("Microsoft.ApplicationInsights.Web", "2.10.0", DependencyType.Unknown),
|
251
|
+
new("MSTest.TestAdapter", "2.1.0", DependencyType.Unknown),
|
252
|
+
new("NETStandard.Library", "2.0.3", DependencyType.Unknown),
|
253
|
+
};
|
254
|
+
var packages = new[] {
|
255
|
+
new Dependency("System", "4.1.311.2", DependencyType.Unknown),
|
256
|
+
new Dependency("System.Core", "3.5.21022.801", DependencyType.Unknown),
|
257
|
+
new Dependency("Moq", "4.16.1", DependencyType.Unknown),
|
258
|
+
new Dependency("Castle.Core", "4.4.1", DependencyType.Unknown),
|
259
|
+
new Dependency("MSTest.TestAdapter", "2.1.0", DependencyType.Unknown),
|
260
|
+
new Dependency("MSTest.TestFramework", "2.1.0", DependencyType.Unknown),
|
261
|
+
new Dependency("Microsoft.ApplicationInsights", "2.10.0", DependencyType.Unknown),
|
262
|
+
new Dependency("Microsoft.ApplicationInsights.Agent.Intercept", "2.4.0", DependencyType.Unknown),
|
263
|
+
new Dependency("Microsoft.ApplicationInsights.DependencyCollector", "2.10.0", DependencyType.Unknown),
|
264
|
+
new Dependency("Microsoft.ApplicationInsights.PerfCounterCollector", "2.10.0", DependencyType.Unknown),
|
265
|
+
new Dependency("Microsoft.ApplicationInsights.Web", "2.10.0", DependencyType.Unknown),
|
266
|
+
new Dependency("Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel", "2.10.0", DependencyType.Unknown),
|
267
|
+
new Dependency("Microsoft.ApplicationInsights.WindowsServer", "2.10.0", DependencyType.Unknown),
|
268
|
+
new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
|
269
|
+
new Dependency("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
270
|
+
};
|
271
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", packages);
|
272
|
+
for(int i = 0; i < actualDependencies.Length; i++)
|
273
|
+
{
|
274
|
+
var ad = actualDependencies[i];
|
275
|
+
var ed = expectedDependencies[i];
|
276
|
+
Assert.Equal(ed, ad);
|
277
|
+
}
|
278
|
+
Assert.Equal(expectedDependencies, actualDependencies);
|
279
|
+
}
|
280
|
+
|
281
|
+
[Fact]
|
282
|
+
public async Task AllPackageDependencies_DoNotIncludeUpdateOnlyPackages()
|
283
|
+
{
|
284
|
+
using var temp = new TemporaryDirectory();
|
285
|
+
var expectedDependencies = new Dependency[]
|
286
|
+
{
|
287
|
+
new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown),
|
288
|
+
new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown),
|
289
|
+
new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown),
|
290
|
+
new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
|
291
|
+
new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown),
|
292
|
+
new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown),
|
293
|
+
new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown),
|
294
|
+
new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown),
|
295
|
+
new("System.Buffers", "4.5.1", DependencyType.Unknown),
|
296
|
+
new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown),
|
297
|
+
new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown),
|
298
|
+
new("System.Memory", "4.5.5", DependencyType.Unknown),
|
299
|
+
new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown),
|
300
|
+
new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown),
|
301
|
+
new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown),
|
302
|
+
new("NETStandard.Library", "2.0.3", DependencyType.Unknown),
|
303
|
+
};
|
304
|
+
var packages = new[] {
|
305
|
+
new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
|
306
|
+
new Dependency("Newtonsoft.Json", "12.0.1", DependencyType.Unknown, IsUpdate: true)
|
307
|
+
};
|
308
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", packages);
|
309
|
+
Assert.Equal(expectedDependencies, actualDependencies);
|
310
|
+
}
|
311
|
+
|
312
|
+
[Fact]
|
313
|
+
public async Task AllPackageDependenciesCanBeFoundWithNuGetConfig()
|
314
|
+
{
|
315
|
+
var nugetPackagesDirectory = Environment.GetEnvironmentVariable("NUGET_PACKAGES");
|
316
|
+
var nugetHttpCacheDirectory = Environment.GetEnvironmentVariable("NUGET_HTTP_CACHE_PATH");
|
317
|
+
|
318
|
+
try
|
319
|
+
{
|
320
|
+
using var temp = new TemporaryDirectory();
|
321
|
+
|
322
|
+
// It is important to have empty NuGet caches for this test, so override them with temp directories.
|
323
|
+
var tempNuGetPackagesDirectory = Path.Combine(temp.DirectoryPath, ".nuget", "packages");
|
324
|
+
Environment.SetEnvironmentVariable("NUGET_PACKAGES", tempNuGetPackagesDirectory);
|
325
|
+
var tempNuGetHttpCacheDirectory = Path.Combine(temp.DirectoryPath, ".nuget", "v3-cache");
|
326
|
+
Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", tempNuGetHttpCacheDirectory);
|
327
|
+
|
328
|
+
// First validate that we are unable to find dependencies for the package version without a NuGet.config.
|
329
|
+
var dependenciesNoNuGetConfig = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", new[] { new Dependency("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown) });
|
330
|
+
Assert.Equal(Array.Empty<Dependency>(), dependenciesNoNuGetConfig);
|
331
|
+
|
332
|
+
// Write the NuGet.config and try again.
|
333
|
+
await File.WriteAllTextAsync(Path.Combine(temp.DirectoryPath, "NuGet.Config"), """
|
334
|
+
<?xml version="1.0" encoding="utf-8"?>
|
335
|
+
<configuration>
|
336
|
+
<packageSources>
|
337
|
+
<clear />
|
338
|
+
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
|
339
|
+
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
|
340
|
+
</packageSources>
|
341
|
+
</configuration>
|
342
|
+
""");
|
343
|
+
|
344
|
+
var expectedDependencies = new Dependency[]
|
345
|
+
{
|
346
|
+
new("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown),
|
347
|
+
new("System.Buffers", "4.5.1", DependencyType.Unknown),
|
348
|
+
new("System.Collections.Immutable", "7.0.0", DependencyType.Unknown),
|
349
|
+
new("System.Memory", "4.5.5", DependencyType.Unknown),
|
350
|
+
new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown),
|
351
|
+
new("System.Reflection.Metadata", "7.0.0", DependencyType.Unknown),
|
352
|
+
new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown),
|
353
|
+
new("System.Text.Encoding.CodePages", "7.0.0", DependencyType.Unknown),
|
354
|
+
new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown),
|
355
|
+
new("Microsoft.CodeAnalysis.Analyzers", "3.3.4", DependencyType.Unknown),
|
356
|
+
new("NETStandard.Library", "2.0.3", DependencyType.Unknown),
|
357
|
+
};
|
358
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", new[] { new Dependency("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown) });
|
359
|
+
Assert.Equal(expectedDependencies, actualDependencies);
|
360
|
+
}
|
361
|
+
finally
|
362
|
+
{
|
363
|
+
// Restore the NuGet caches.
|
364
|
+
Environment.SetEnvironmentVariable("NUGET_PACKAGES", nugetPackagesDirectory);
|
365
|
+
Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", nugetHttpCacheDirectory);
|
366
|
+
}
|
367
|
+
}
|
368
|
+
|
369
|
+
public static IEnumerable<object[]> GetTopLevelPackageDependenyInfosTestData()
|
370
|
+
{
|
371
|
+
// simple case
|
372
|
+
yield return new object[]
|
373
|
+
{
|
374
|
+
// build file contents
|
375
|
+
new[]
|
376
|
+
{
|
377
|
+
("project.csproj", """
|
378
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
379
|
+
<ItemGroup>
|
380
|
+
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
381
|
+
</ItemGroup>
|
382
|
+
</Project>
|
383
|
+
""")
|
384
|
+
},
|
385
|
+
// expected dependencies
|
386
|
+
new Dependency[]
|
387
|
+
{
|
388
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
389
|
+
}
|
390
|
+
};
|
391
|
+
|
392
|
+
// version is a child-node of the package reference
|
393
|
+
yield return new object[]
|
394
|
+
{
|
395
|
+
// build file contents
|
396
|
+
new[]
|
397
|
+
{
|
398
|
+
("project.csproj", """
|
399
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
400
|
+
<ItemGroup>
|
401
|
+
<PackageReference Include="Newtonsoft.Json">
|
402
|
+
<Version>12.0.1</Version>
|
403
|
+
</PackageReference>
|
404
|
+
</ItemGroup>
|
405
|
+
</Project>
|
406
|
+
""")
|
407
|
+
},
|
408
|
+
// expected dependencies
|
409
|
+
new Dependency[]
|
410
|
+
{
|
411
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
412
|
+
}
|
413
|
+
};
|
414
|
+
|
415
|
+
// version is in property in same file
|
416
|
+
yield return new object[]
|
417
|
+
{
|
418
|
+
// build file contents
|
419
|
+
new[]
|
420
|
+
{
|
421
|
+
("project.csproj", """
|
422
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
423
|
+
<PropertyGroup>
|
424
|
+
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
|
425
|
+
</PropertyGroup>
|
426
|
+
<ItemGroup>
|
427
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
428
|
+
</ItemGroup>
|
429
|
+
</Project>
|
430
|
+
""")
|
431
|
+
},
|
432
|
+
// expected dependencies
|
433
|
+
new Dependency[]
|
434
|
+
{
|
435
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
436
|
+
}
|
437
|
+
};
|
438
|
+
|
439
|
+
// version is a property not triggered by a condition
|
440
|
+
yield return new object[]
|
441
|
+
{
|
442
|
+
// build file contents
|
443
|
+
new[]
|
444
|
+
{
|
445
|
+
("project.csproj", """
|
446
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
447
|
+
<PropertyGroup>
|
448
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
449
|
+
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
|
450
|
+
<NewtonsoftJsonVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</NewtonsoftJsonVersion>
|
451
|
+
</PropertyGroup>
|
452
|
+
<ItemGroup>
|
453
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
454
|
+
</ItemGroup>
|
455
|
+
</Project>
|
456
|
+
""")
|
457
|
+
},
|
458
|
+
// expected dependencies
|
459
|
+
new Dependency[]
|
460
|
+
{
|
461
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
462
|
+
}
|
463
|
+
};
|
464
|
+
|
465
|
+
// version is a property with a condition checking for an empty string
|
466
|
+
yield return new object[]
|
467
|
+
{
|
468
|
+
// build file contents
|
469
|
+
new[]
|
470
|
+
{
|
471
|
+
("project.csproj", """
|
472
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
473
|
+
<PropertyGroup>
|
474
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
475
|
+
<NewtonsoftJsonVersion Condition="$(NewtonsoftJsonVersion) == ''">12.0.1</NewtonsoftJsonVersion>
|
476
|
+
<NewtonsoftJsonVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</NewtonsoftJsonVersion>
|
477
|
+
</PropertyGroup>
|
478
|
+
<ItemGroup>
|
479
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
480
|
+
</ItemGroup>
|
481
|
+
</Project>
|
482
|
+
""")
|
483
|
+
},
|
484
|
+
// expected dependencies
|
485
|
+
new Dependency[]
|
486
|
+
{
|
487
|
+
new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
|
488
|
+
}
|
489
|
+
};
|
490
|
+
|
491
|
+
// version is set in one file, used in another
|
492
|
+
yield return new object[]
|
493
|
+
{
|
494
|
+
// build file contents
|
495
|
+
new[]
|
496
|
+
{
|
497
|
+
("Packages.props", """
|
498
|
+
<Project>
|
499
|
+
<ItemGroup>
|
500
|
+
<PackageReference Update="Azure.Identity" Version="1.6.0" />
|
501
|
+
<PackageReference Update="Microsoft.Data.SqlClient" Version="5.1.4" />
|
502
|
+
</ItemGroup>
|
503
|
+
</Project>
|
504
|
+
"""),
|
505
|
+
("project.csproj", """
|
506
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
507
|
+
<PropertyGroup>
|
508
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
509
|
+
</PropertyGroup>
|
510
|
+
<ItemGroup>
|
511
|
+
<PackageReference Include="Azure.Identity" Version="1.6.1" />
|
512
|
+
</ItemGroup>
|
513
|
+
</Project>
|
514
|
+
""")
|
515
|
+
},
|
516
|
+
// expected dependencies
|
517
|
+
new Dependency[]
|
518
|
+
{
|
519
|
+
new("Azure.Identity", "1.6.0", DependencyType.Unknown),
|
520
|
+
new("Microsoft.Data.SqlClient", "5.1.4", DependencyType.Unknown, IsUpdate: true)
|
521
|
+
}
|
522
|
+
};
|
523
|
+
|
524
|
+
// version is set in one file, used in another
|
525
|
+
yield return new object[]
|
526
|
+
{
|
527
|
+
// build file contents
|
528
|
+
new[]
|
529
|
+
{
|
530
|
+
("project.csproj", """
|
531
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
532
|
+
<PropertyGroup>
|
533
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
534
|
+
</PropertyGroup>
|
535
|
+
<ItemGroup>
|
536
|
+
<PackageReference Include="Azure.Identity" />
|
537
|
+
</ItemGroup>
|
538
|
+
</Project>
|
539
|
+
"""),
|
540
|
+
("Packages.props", """
|
541
|
+
<Project>
|
542
|
+
<ItemGroup>
|
543
|
+
<PackageReference Update="Azure.Identity" Version="1.6.0" />
|
544
|
+
<PackageReference Update="Microsoft.Data.SqlClient" Version="5.1.4" />
|
545
|
+
</ItemGroup>
|
546
|
+
</Project>
|
547
|
+
""")
|
548
|
+
},
|
549
|
+
// expected dependencies
|
550
|
+
new Dependency[]
|
551
|
+
{
|
552
|
+
new("Azure.Identity", "1.6.0", DependencyType.Unknown),
|
553
|
+
new("Microsoft.Data.SqlClient", "5.1.4", DependencyType.Unknown, IsUpdate: true)
|
554
|
+
}
|
555
|
+
};
|
556
|
+
}
|
557
|
+
|
558
|
+
public static IEnumerable<object[]> SolutionProjectPathTestData()
|
559
|
+
{
|
560
|
+
yield return new object[]
|
561
|
+
{
|
562
|
+
"""
|
563
|
+
Microsoft Visual Studio Solution File, Format Version 12.00
|
564
|
+
# Visual Studio 14
|
565
|
+
VisualStudioVersion = 14.0.22705.0
|
566
|
+
MinimumVisualStudioVersion = 10.0.40219.1
|
567
|
+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Some.Project", "src\Some.Project\SomeProject.csproj", "{782E0C0A-10D3-444D-9640-263D03D2B20C}"
|
568
|
+
EndProject
|
569
|
+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Some.Project.Test", "src\Some.Project.Test\Some.Project.Test.csproj", "{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}"
|
570
|
+
EndProject
|
571
|
+
Global
|
572
|
+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
573
|
+
Debug|Any CPU = Debug|Any CPU
|
574
|
+
Release|Any CPU = Release|Any CPU
|
575
|
+
EndGlobalSection
|
576
|
+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
577
|
+
{782E0C0A-10D3-444D-9640-263D03D2B20C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
578
|
+
{782E0C0A-10D3-444D-9640-263D03D2B20C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
579
|
+
{782E0C0A-10D3-444D-9640-263D03D2B20C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
580
|
+
{782E0C0A-10D3-444D-9640-263D03D2B20C}.Release|Any CPU.Build.0 = Release|Any CPU
|
581
|
+
{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
582
|
+
{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
583
|
+
{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
584
|
+
{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Release|Any CPU.Build.0 = Release|Any CPU
|
585
|
+
EndGlobalSection
|
586
|
+
GlobalSection(SolutionProperties) = preSolution
|
587
|
+
HideSolutionNode = FALSE
|
588
|
+
EndGlobalSection
|
589
|
+
EndGlobal
|
590
|
+
""",
|
591
|
+
new[]
|
592
|
+
{
|
593
|
+
"src/Some.Project/SomeProject.csproj",
|
594
|
+
"src/Some.Project.Test/Some.Project.Test.csproj",
|
595
|
+
},
|
596
|
+
};
|
597
|
+
}
|
598
|
+
}
|