dependabot-nuget 0.321.3 → 0.322.1

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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +22 -22
  3. data/helpers/lib/NuGetUpdater/DotNetPackageCorrelation.Cli/Program.cs +21 -7
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +19 -11
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +19 -9
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +21 -14
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +8 -5
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +29 -16
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +20 -19
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +2 -1
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +1 -1
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +10 -23
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Run.cs +9 -0
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +15 -232
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +1 -154
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -12
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +5 -13
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/PrivateSourceTimedOutException.cs +12 -0
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +4 -0
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PrivateSourceTimedOut.cs +10 -0
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/AzurePackageDetailFinder.cs +30 -0
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGenerator.cs +237 -0
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitHubPackageDetailFinder.cs +101 -0
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitLabPackageDetailFinder.cs +107 -0
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/HttpFetcher.cs +32 -0
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IHttpFetcher.cs +30 -0
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPackageDetailFinder.cs +47 -0
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPullRequestBodyGenerator.cs +11 -0
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/SimplePullRequestBodyGenerator.cs +15 -0
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestTextGenerator.cs +7 -3
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +3 -525
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +2 -2
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +4 -4
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +2 -2
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +2 -2
  36. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +2 -2
  37. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/FileWriterWorker.cs +85 -35
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/XmlFileWriter.cs +27 -8
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +1 -856
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +18 -7
  41. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +16 -200
  42. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +21 -556
  43. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +9 -73
  44. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Clone/CloneWorkerTests.cs +2 -2
  45. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/DependencySolver/MSBuildDependencySolverTests.cs +1 -1
  46. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +1 -20
  47. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +0 -2
  48. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +3 -62
  49. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +13 -563
  50. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +20 -269
  51. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +2 -2
  52. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +0 -1
  53. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/EndToEndTests.cs +131 -131
  54. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/HttpApiHandlerTests.cs +1 -0
  55. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/JobErrorBaseTests.cs +7 -0
  56. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MessageReportTests.cs +11 -0
  57. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +0 -203
  58. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGeneratorTests.cs +871 -0
  59. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/IPackageDetailFinderTests.cs +28 -0
  60. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/TestHttpFetcher.cs +23 -0
  61. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestTextTests.cs +24 -24
  62. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +14 -12
  63. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandlerTests.cs +6 -6
  64. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/GroupUpdateAllVersionsHandlerTests.cs +18 -18
  65. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandlerTests.cs +15 -15
  66. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandlerTests.cs +21 -21
  67. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandlerTests.cs +15 -15
  68. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/UpdateHandlersTestsBase.cs +1 -8
  69. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests.cs +2 -2
  70. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests_MiscellaneousTests.cs +45 -0
  71. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs +111 -0
  72. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +1 -159
  73. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +26 -660
  74. data/helpers/lib/NuGetUpdater/global.json +1 -1
  75. metadata +18 -10
  76. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunResult.cs +0 -13
  77. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestMessageTests.cs +0 -296
  78. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +0 -3592
  79. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatePermittedAndMessageTests.cs +0 -457
  80. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DirsProj.cs +0 -378
  81. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterHelperTests.cs +0 -175
@@ -1,4 +1,3 @@
1
- using System.Collections.Immutable;
2
1
  using System.Text.Json;
3
2
 
4
3
  using NuGetUpdater.Core.Run;
@@ -13,185 +12,6 @@ using TestFile = (string Path, string Content);
13
12
 
14
13
  public class MSBuildHelperTests : TestBase
15
14
  {
16
- [Fact]
17
- public void GetRootedValue_FindsValue()
18
- {
19
- // Arrange
20
- var projectContents = """
21
- <Project>
22
- <PropertyGroup>
23
- <TargetFramework>net8.0</TargetFramework>
24
- </PropertyGroup>
25
- <ItemGroup>
26
- <PackageReference Include="Some.Package" Version="$(PackageVersion1)" />
27
- </ItemGroup>
28
- </Project>
29
- """;
30
- var propertyInfo = new Dictionary<string, Property>
31
- {
32
- { "PackageVersion1", new("PackageVersion1", "1.1.1", "Packages.props") },
33
- };
34
-
35
- // Act
36
- var (resultType, _, evaluatedValue, _, _) = MSBuildHelper.GetEvaluatedValue(projectContents, propertyInfo);
37
-
38
- Assert.Equal(EvaluationResultType.Success, resultType);
39
-
40
- // Assert
41
- Assert.Equal("""
42
- <Project>
43
- <PropertyGroup>
44
- <TargetFramework>net8.0</TargetFramework>
45
- </PropertyGroup>
46
- <ItemGroup>
47
- <PackageReference Include="Some.Package" Version="1.1.1" />
48
- </ItemGroup>
49
- </Project>
50
- """, evaluatedValue);
51
- }
52
-
53
- [Fact(Timeout = 1000)]
54
- public async Task GetRootedValue_DoesNotRecurseAsync()
55
- {
56
- // Arrange
57
- var projectContents = """
58
- <Project>
59
- <PropertyGroup>
60
- <TargetFramework>net8.0</TargetFramework>
61
- </PropertyGroup>
62
- <ItemGroup>
63
- <PackageReference Include="Some.Package" Version="$(PackageVersion1)" />
64
- </ItemGroup>
65
- </Project>
66
- """;
67
- var propertyInfo = new Dictionary<string, Property>
68
- {
69
- { "PackageVersion1", new("PackageVersion1", "$(PackageVersion2)", "Packages.props") },
70
- { "PackageVersion2", new("PackageVersion2", "$(PackageVersion1)", "Packages.props") }
71
- };
72
- // This is needed to make the timeout work. Without that we could get caugth in an infinite loop.
73
- await Task.Delay(1);
74
-
75
- // Act
76
- var (resultType, _, _, _, errorMessage) = MSBuildHelper.GetEvaluatedValue(projectContents, propertyInfo);
77
-
78
- // Assert
79
- Assert.Equal(EvaluationResultType.CircularReference, resultType);
80
- Assert.Equal("Property 'PackageVersion1' has a circular reference.", errorMessage);
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
- AssertEx.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
- [InlineData("<Project><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework><TargetFrameworkVersion Condition='False'>v4.7.2</TargetFrameworkVersion></PropertyGroup></Project>", "netstandard2.0", null)]
114
- [InlineData("<Project><PropertyGroup><TargetFramework>$(PropertyThatCannotBeResolved)</TargetFramework></PropertyGroup></Project>", null, null)]
115
- public async Task TfmsCanBeDeterminedFromProjectContents(string projectContents, string? expectedTfm1, string? expectedTfm2)
116
- {
117
- var projectPath = Path.GetTempFileName();
118
- try
119
- {
120
- File.WriteAllText(projectPath, projectContents);
121
- var expectedTfms = new[] { expectedTfm1, expectedTfm2 }.Where(tfm => tfm is not null).ToArray();
122
- var (_buildFiles, actualTfms) = await MSBuildHelper.LoadBuildFilesAndTargetFrameworksAsync(Path.GetDirectoryName(projectPath)!, projectPath);
123
- AssertEx.Equal(expectedTfms, actualTfms);
124
- }
125
- finally
126
- {
127
- File.Delete(projectPath);
128
- }
129
- }
130
-
131
- [Fact]
132
- public async Task IntermediatePropsAndTargetsAreExcludedFromBuildFileDiscovery()
133
- {
134
- // arrange
135
- var repoFiles = new[]
136
- {
137
- ("project.csproj", """
138
- <Project Sdk="Microsoft.NET.Sdk">
139
- <PropertyGroup>
140
- <TargetFramework>net9.0</TargetFramework>
141
- </PropertyGroup>
142
- <Import Project="SomeFile.props" />
143
- <ItemGroup>
144
- <PackageReference Include="Some.Package" Version="1.0.0" />
145
- </ItemGroup>
146
- </Project>
147
- """),
148
- ("global.json", "{}"),
149
- ("Directory.Build.props", "<Project />"),
150
- ("Directory.Build.targets", "<Project />"),
151
- ("SomeFile.props", "<Project />"),
152
- // these simulate a direct discovery operation having previously been performed
153
- ("obj/project.csproj.nuget.g.props", "<Project />"),
154
- ("obj/project.csproj.nuget.g.targets", "<Project />"),
155
- };
156
- using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(repoFiles);
157
- var fullProjectPath = Path.Combine(tempDir.DirectoryPath, "project.csproj");
158
- await UpdateWorkerTestBase.MockNuGetPackagesInDirectory([], tempDir.DirectoryPath);
159
-
160
- // act
161
- var (buildFiles, _tfms) = await MSBuildHelper.LoadBuildFilesAndTargetFrameworksAsync(tempDir.DirectoryPath, fullProjectPath);
162
-
163
- // assert
164
- var actualBuildFilePaths = buildFiles.Select(f => Path.GetRelativePath(tempDir.DirectoryPath, f.Path).NormalizePathToUnix()).ToArray();
165
- var expectedBuildFilePaths = new[]
166
- {
167
- "project.csproj",
168
- "Directory.Build.props",
169
- "SomeFile.props",
170
- "Directory.Build.targets",
171
- };
172
- AssertEx.Equal(expectedBuildFilePaths, actualBuildFilePaths);
173
- }
174
-
175
- [Theory]
176
- [MemberData(nameof(GetTopLevelPackageDependencyInfosTestData))]
177
- public async Task TopLevelPackageDependenciesCanBeDetermined(TestFile[] buildFileContents, Dependency[] expectedTopLevelDependencies, MockNuGetPackage[] testPackages)
178
- {
179
- using var testDirectory = new TemporaryDirectory();
180
- var buildFiles = new List<ProjectBuildFile>();
181
-
182
- await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, testDirectory.DirectoryPath);
183
-
184
- foreach (var (path, content) in buildFileContents)
185
- {
186
- var fullPath = Path.Combine(testDirectory.DirectoryPath, path);
187
- await File.WriteAllTextAsync(fullPath, content);
188
- buildFiles.Add(ProjectBuildFile.Parse(testDirectory.DirectoryPath, fullPath, content));
189
- }
190
-
191
- var actualTopLevelDependencies = MSBuildHelper.GetTopLevelPackageDependencyInfos(buildFiles.ToImmutableArray());
192
- AssertEx.Equal(expectedTopLevelDependencies, actualTopLevelDependencies);
193
- }
194
-
195
15
  [Theory]
196
16
  [InlineData(true)]
197
17
  [InlineData(false)]
@@ -209,8 +29,7 @@ public class MSBuildHelperTests : TestBase
209
29
 
210
30
  Dependency[] expectedDependencies =
211
31
  [
212
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
213
- new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
32
+ new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["netstandard2.0"], IsDirect: true),
214
33
  new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
215
34
  new("Package.C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
216
35
  new("Package.D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
@@ -291,7 +110,7 @@ public class MSBuildHelperTests : TestBase
291
110
 
292
111
  Dependency[] expectedDependencies =
293
112
  [
294
- new("Package.1A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
113
+ new("Package.1A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
295
114
  new("Package.1B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
296
115
  new("Package.1C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
297
116
  new("Package.1D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
@@ -308,7 +127,7 @@ public class MSBuildHelperTests : TestBase
308
127
  new("Package.1O", "15.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
309
128
  new("Package.1P", "16.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
310
129
  new("Package.1Q", "17.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
311
- new("Package.1R", "18.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
130
+ new("Package.1R", "18.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
312
131
  new("Package.1S", "19.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
313
132
  new("Package.1T", "20.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
314
133
  new("Package.1U", "21.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
@@ -317,7 +136,7 @@ public class MSBuildHelperTests : TestBase
317
136
  new("Package.1X", "24.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
318
137
  new("Package.1Y", "25.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
319
138
  new("Package.1Z", "26.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
320
- new("Package.2A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
139
+ new("Package.2A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
321
140
  new("Package.2B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
322
141
  new("Package.2C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
323
142
  new("Package.2D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
@@ -334,7 +153,7 @@ public class MSBuildHelperTests : TestBase
334
153
  new("Package.2O", "15.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
335
154
  new("Package.2P", "16.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
336
155
  new("Package.2Q", "17.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
337
- new("Package.2R", "18.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
156
+ new("Package.2R", "18.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect : true),
338
157
  new("Package.2S", "19.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
339
158
  new("Package.2T", "20.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
340
159
  new("Package.2U", "21.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
@@ -385,8 +204,8 @@ public class MSBuildHelperTests : TestBase
385
204
 
386
205
  Dependency[] expectedDependencies =
387
206
  [
388
- new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
389
- new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
207
+ new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
208
+ new("Package.B", "2.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
390
209
  ];
391
210
  var packages = new[]
392
211
  {
@@ -422,7 +241,7 @@ public class MSBuildHelperTests : TestBase
422
241
  <add key="contoso" value="https://contoso.com/v3/index.json"
423
242
  </packageSources>
424
243
  </configuration>
425
- """);
244
+ """, TestContext.Current.CancellationToken);
426
245
 
427
246
  // Asserting it didn't throw
428
247
  var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
@@ -460,11 +279,11 @@ public class MSBuildHelperTests : TestBase
460
279
  <add key="localSource2" value="local/source2" />
461
280
  </packageSources>
462
281
  </configuration>
463
- """);
282
+ """, TestContext.Current.CancellationToken);
464
283
 
465
284
  Dependency[] expectedDependencies =
466
285
  [
467
- new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
286
+ new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect : true),
468
287
  new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
469
288
  ];
470
289
 
@@ -480,108 +299,6 @@ public class MSBuildHelperTests : TestBase
480
299
  AssertEx.Equal(expectedDependencies, actualDependencies);
481
300
  }
482
301
 
483
- [Theory]
484
- [InlineData(true)]
485
- [InlineData(false)]
486
- public async Task DependencyConflictsCanBeResolvedWithBruteForce(bool useExistingSdks)
487
- {
488
- var repoRoot = Directory.CreateTempSubdirectory($"test_{nameof(DependencyConflictsCanBeResolvedWithBruteForce)}_");
489
- MockNuGetPackage[] testPackages =
490
- [
491
- // some base packages
492
- MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
493
- MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0"),
494
- MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.0", "net8.0"),
495
- // some packages that are hard-locked to specific versions of the previous package
496
- MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.0.0", "net8.0", [(null, [("Some.Package", "[1.0.0]")])]),
497
- MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.1.0", "net8.0", [(null, [("Some.Package", "[1.1.0]")])]),
498
- MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.2.0", "net8.0", [(null, [("Some.Package", "[1.2.0]")])]),
499
- ];
500
- await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, repoRoot.FullName);
501
-
502
- // the package `Some.Package` was already updated from 1.0.0 to 1.2.0, but this causes a conflict with
503
- // `Some.Other.Package` that needs to be resolved
504
- try
505
- {
506
- var projectPath = Path.Join(repoRoot.FullName, "project.csproj");
507
- await File.WriteAllTextAsync(projectPath, """
508
- <Project Sdk="Microsoft.NET.Sdk">
509
- <PropertyGroup>
510
- <TargetFramework>net8.0</TargetFramework>
511
- </PropertyGroup>
512
- <ItemGroup>
513
- <PackageReference Include="Some.Package" Version="1.2.0" />
514
- <PackageReference Include="Some.Other.Package" Version="1.0.0" />
515
- </ItemGroup>
516
- </Project>
517
- """);
518
- var dependencies = new[]
519
- {
520
- new Dependency("Some.Package", "1.2.0", DependencyType.PackageReference),
521
- new Dependency("Some.Other.Package", "1.0.0", DependencyType.PackageReference),
522
- }.ToImmutableArray();
523
- var update = new[]
524
- {
525
- new Dependency("Some.Other.Package", "1.2.0", DependencyType.PackageReference),
526
- };
527
- var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflictsWithBruteForce(
528
- repoRoot.FullName,
529
- projectPath,
530
- "net8.0",
531
- dependencies,
532
- new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
533
- new TestLogger()
534
- );
535
- Assert.NotNull(resolvedDependencies);
536
- Assert.Equal(2, resolvedDependencies.Value.Length);
537
- Assert.Equal("Some.Package", resolvedDependencies.Value[0].Name);
538
- Assert.Equal("1.2.0", resolvedDependencies.Value[0].Version);
539
- Assert.Equal("Some.Other.Package", resolvedDependencies.Value[1].Name);
540
- Assert.Equal("1.2.0", resolvedDependencies.Value[1].Version);
541
- }
542
- finally
543
- {
544
- repoRoot.Delete(recursive: true);
545
- }
546
- }
547
-
548
- [Fact]
549
- public void UpdateWithWorkloadsTargetFrameworks()
550
- {
551
- // Arrange
552
- var projectContents = """
553
- <Project>
554
- <PropertyGroup>
555
- <TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst;</TargetFrameworks>
556
- </PropertyGroup>
557
- <ItemGroup>
558
- <PackageReference Include="Some.Package" Version="$(PackageVersion1)" />
559
- </ItemGroup>
560
- </Project>
561
- """;
562
- var propertyInfo = new Dictionary<string, Property>
563
- {
564
- { "PackageVersion1", new("PackageVersion1", "1.1.1", "Packages.props") },
565
- };
566
-
567
- // Act
568
- var (resultType, _, evaluatedValue, _, _) = MSBuildHelper.GetEvaluatedValue(projectContents, propertyInfo);
569
-
570
- Assert.Equal(EvaluationResultType.Success, resultType);
571
-
572
- // Assert
573
- Assert.Equal("""
574
- <Project>
575
- <PropertyGroup>
576
- <TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst;</TargetFrameworks>
577
- </PropertyGroup>
578
- <ItemGroup>
579
- <PackageReference Include="Some.Package" Version="1.1.1" />
580
- </ItemGroup>
581
- </Project>
582
- """, evaluatedValue);
583
- }
584
-
585
302
  [Theory]
586
303
  [MemberData(nameof(GetTargetFrameworkValuesFromProjectData))]
587
304
  public async Task GetTargetFrameworkValuesFromProject(string projectContents, string[] expectedTfms)
@@ -778,6 +495,14 @@ public class MSBuildHelperTests : TestBase
778
495
  new PrivateSourceBadResponse(["http://localhost/test-feed"]),
779
496
  ];
780
497
 
498
+ yield return
499
+ [
500
+ // output
501
+ " The HTTP request to 'GET some-source' has timed out after 100000ms.",
502
+ // expectedError
503
+ new PrivateSourceTimedOut("some-source"),
504
+ ];
505
+
781
506
  yield return
782
507
  [
783
508
  // output
@@ -826,6 +551,14 @@ public class MSBuildHelperTests : TestBase
826
551
  new DependencyNotFound("Some.Package"),
827
552
  ];
828
553
 
554
+ yield return
555
+ [
556
+ // output
557
+ "Unable to resolve dependency 'Some.Package'. Source(s) used: 'nuget.org'.",
558
+ // expectedError
559
+ new DependencyNotFound("Some.Package"),
560
+ ];
561
+
829
562
  yield return
830
563
  [
831
564
  // output
@@ -893,371 +626,4 @@ public class MSBuildHelperTests : TestBase
893
626
  new DependencyFileNotParseable("/path/to/NuGet.Config", "Some error message."),
894
627
  ];
895
628
  }
896
-
897
- public static IEnumerable<object[]> GetTopLevelPackageDependencyInfosTestData()
898
- {
899
- // simple case
900
- yield return
901
- [
902
- // build file contents
903
- new[]
904
- {
905
- ("project.csproj", """
906
- <Project Sdk="Microsoft.NET.Sdk">
907
- <ItemGroup>
908
- <PackageReference Include="Some.Package" Version="12.0.1" />
909
- </ItemGroup>
910
- </Project>
911
- """)
912
- },
913
- // expected dependencies
914
- new Dependency[]
915
- {
916
- new(
917
- "Some.Package",
918
- "12.0.1",
919
- DependencyType.PackageReference,
920
- EvaluationResult: new(EvaluationResultType.Success, "12.0.1", "12.0.1", null, null))
921
- },
922
- new MockNuGetPackage[]
923
- {
924
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
925
- }
926
- ];
927
-
928
- // version is a child-node of the package reference
929
- yield return
930
- [
931
- // build file contents
932
- new[]
933
- {
934
- ("project.csproj", """
935
- <Project Sdk="Microsoft.NET.Sdk">
936
- <ItemGroup>
937
- <PackageReference Include="Some.Package">
938
- <Version>12.0.1</Version>
939
- </PackageReference>
940
- </ItemGroup>
941
- </Project>
942
- """)
943
- },
944
- // expected dependencies
945
- new Dependency[]
946
- {
947
- new(
948
- "Some.Package",
949
- "12.0.1",
950
- DependencyType.PackageReference,
951
- EvaluationResult: new(EvaluationResultType.Success, "12.0.1", "12.0.1", null, null))
952
- },
953
- new MockNuGetPackage[]
954
- {
955
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
956
- }
957
- ];
958
-
959
- // version is in property in same file
960
- yield return
961
- [
962
- // build file contents
963
- new[]
964
- {
965
- ("project.csproj", """
966
- <Project Sdk="Microsoft.NET.Sdk">
967
- <PropertyGroup>
968
- <SomePackageVersion>12.0.1</SomePackageVersion>
969
- </PropertyGroup>
970
- <ItemGroup>
971
- <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
972
- </ItemGroup>
973
- </Project>
974
- """)
975
- },
976
- // expected dependencies
977
- new Dependency[]
978
- {
979
- new(
980
- "Some.Package",
981
- "12.0.1",
982
- DependencyType.PackageReference,
983
- new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
984
- },
985
- new MockNuGetPackage[]
986
- {
987
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
988
- }
989
- ];
990
-
991
- // version is a property not triggered by a condition
992
- yield return
993
- [
994
- // build file contents
995
- new[]
996
- {
997
- ("project.csproj", """
998
- <Project Sdk="Microsoft.NET.Sdk">
999
- <PropertyGroup>
1000
- <TargetFramework>netstandard2.0</TargetFramework>
1001
- <SomePackageVersion>12.0.1</SomePackageVersion>
1002
- <SomePackageVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</SomePackageVersion>
1003
- </PropertyGroup>
1004
- <ItemGroup>
1005
- <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
1006
- </ItemGroup>
1007
- </Project>
1008
- """)
1009
- },
1010
- // expected dependencies
1011
- new Dependency[]
1012
- {
1013
- new(
1014
- "Some.Package",
1015
- "12.0.1",
1016
- DependencyType.PackageReference,
1017
- new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
1018
- },
1019
- new MockNuGetPackage[]
1020
- {
1021
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
1022
- }
1023
- ];
1024
-
1025
- // version is a property not triggered by a quoted condition
1026
- yield return new object[]
1027
- {
1028
- // build file contents
1029
- new[]
1030
- {
1031
- ("project.csproj", """
1032
- <Project Sdk="Microsoft.NET.Sdk">
1033
- <PropertyGroup>
1034
- <TargetFramework>netstandard2.0</TargetFramework>
1035
- <SomePackageVersion>12.0.1</SomePackageVersion>
1036
- <SomePackageVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</SomePackageVersion>
1037
- </PropertyGroup>
1038
- <ItemGroup>
1039
- <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
1040
- </ItemGroup>
1041
- </Project>
1042
- """)
1043
- },
1044
- // expected dependencies
1045
- new Dependency[]
1046
- {
1047
- new(
1048
- "Some.Package",
1049
- "12.0.1",
1050
- DependencyType.PackageReference,
1051
- new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
1052
- },
1053
- new MockNuGetPackage[]
1054
- {
1055
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
1056
- }
1057
- };
1058
-
1059
- // version is a property with a condition checking for an empty string
1060
- yield return
1061
- [
1062
- // build file contents
1063
- new[]
1064
- {
1065
- ("project.csproj", """
1066
- <Project Sdk="Microsoft.NET.Sdk">
1067
- <PropertyGroup>
1068
- <TargetFramework>netstandard2.0</TargetFramework>
1069
- <SomePackageVersion Condition="$(SomePackageVersion) == ''">12.0.1</SomePackageVersion>
1070
- <SomePackageVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</SomePackageVersion>
1071
- </PropertyGroup>
1072
- <ItemGroup>
1073
- <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
1074
- </ItemGroup>
1075
- </Project>
1076
- """)
1077
- },
1078
- // expected dependencies
1079
- new Dependency[]
1080
- {
1081
- new(
1082
- "Some.Package",
1083
- "12.0.1",
1084
- DependencyType.PackageReference,
1085
- new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
1086
- },
1087
- new MockNuGetPackage[]
1088
- {
1089
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
1090
- }
1091
- ];
1092
-
1093
- // version is a property with a quoted condition checking for an empty string
1094
- yield return new object[]
1095
- {
1096
- // build file contents
1097
- new[]
1098
- {
1099
- ("project.csproj", """
1100
- <Project Sdk="Microsoft.NET.Sdk">
1101
- <PropertyGroup>
1102
- <TargetFramework>netstandard2.0</TargetFramework>
1103
- <SomePackageVersion Condition="'$(SomePackageVersion)' == ''">12.0.1</SomePackageVersion>
1104
- <SomePackageVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</SomePackageVersion>
1105
- </PropertyGroup>
1106
- <ItemGroup>
1107
- <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
1108
- </ItemGroup>
1109
- </Project>
1110
- """)
1111
- },
1112
- // expected dependencies
1113
- new Dependency[]
1114
- {
1115
- new(
1116
- "Some.Package",
1117
- "12.0.1",
1118
- DependencyType.PackageReference,
1119
- new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
1120
- },
1121
- new MockNuGetPackage[]
1122
- {
1123
- MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
1124
- }
1125
- };
1126
-
1127
- // version is set in one file, used in another
1128
- yield return
1129
- [
1130
- // build file contents
1131
- new[]
1132
- {
1133
- ("Packages.props", """
1134
- <Project>
1135
- <ItemGroup>
1136
- <PackageReference Update="Package.A" Version="1.6.0" />
1137
- <PackageReference Update="Package.B" Version="5.1.4" />
1138
- </ItemGroup>
1139
- </Project>
1140
- """),
1141
- ("project.csproj", """
1142
- <Project Sdk="Microsoft.NET.Sdk">
1143
- <PropertyGroup>
1144
- <TargetFramework>net8.0</TargetFramework>
1145
- </PropertyGroup>
1146
- <ItemGroup>
1147
- <PackageReference Include="Package.A" Version="1.6.1" />
1148
- </ItemGroup>
1149
- </Project>
1150
- """)
1151
- },
1152
- // expected dependencies
1153
- new Dependency[]
1154
- {
1155
- new(
1156
- "Package.A",
1157
- "1.6.0",
1158
- DependencyType.PackageReference,
1159
- EvaluationResult: new(EvaluationResultType.Success, "1.6.0", "1.6.0", null, null)),
1160
- new(
1161
- "Package.B",
1162
- "5.1.4",
1163
- DependencyType.PackageReference,
1164
- EvaluationResult: new(EvaluationResultType.Success, "5.1.4", "5.1.4", null, null),
1165
- IsUpdate: true),
1166
- },
1167
- new MockNuGetPackage[]
1168
- {
1169
- MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.0", "net8.0"),
1170
- MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.1", "net8.0"),
1171
- MockNuGetPackage.CreateSimplePackage("Package.B", "5.1.4", "net8.0"),
1172
- }
1173
- ];
1174
-
1175
- // version is set in one file, used in another
1176
- yield return
1177
- [
1178
- // build file contents
1179
- new[]
1180
- {
1181
- ("project.csproj", """
1182
- <Project Sdk="Microsoft.NET.Sdk">
1183
- <PropertyGroup>
1184
- <TargetFramework>net8.0</TargetFramework>
1185
- </PropertyGroup>
1186
- <ItemGroup>
1187
- <PackageReference Include="Package.A" />
1188
- </ItemGroup>
1189
- </Project>
1190
- """),
1191
- ("Packages.props", """
1192
- <Project>
1193
- <ItemGroup>
1194
- <PackageReference Update="Package.A" Version="1.6.0" />
1195
- <PackageReference Update="Package.B" Version="5.1.4" />
1196
- </ItemGroup>
1197
- </Project>
1198
- """)
1199
- },
1200
- // expected dependencies
1201
- new Dependency[]
1202
- {
1203
- new(
1204
- "Package.A",
1205
- "1.6.0",
1206
- DependencyType.PackageReference,
1207
- EvaluationResult: new(EvaluationResultType.Success, "1.6.0", "1.6.0", null, null)),
1208
- new(
1209
- "Package.B",
1210
- "5.1.4",
1211
- DependencyType.PackageReference,
1212
- EvaluationResult: new(EvaluationResultType.Success, "5.1.4", "5.1.4", null, null),
1213
- IsUpdate: true),
1214
- },
1215
- new MockNuGetPackage[]
1216
- {
1217
- MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.0", "net8.0"),
1218
- MockNuGetPackage.CreateSimplePackage("Package.B", "5.1.4", "net8.0"),
1219
- }
1220
- ];
1221
- }
1222
-
1223
- public static IEnumerable<object[]> SolutionProjectPathTestData()
1224
- {
1225
- yield return
1226
- [
1227
- """
1228
- Microsoft Visual Studio Solution File, Format Version 12.00
1229
- # Visual Studio 14
1230
- VisualStudioVersion = 14.0.22705.0
1231
- MinimumVisualStudioVersion = 10.0.40219.1
1232
- Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Some.Project", "src\Some.Project\SomeProject.csproj", "{782E0C0A-10D3-444D-9640-263D03D2B20C}"
1233
- EndProject
1234
- Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Some.Project.Test", "src\Some.Project.Test\Some.Project.Test.csproj", "{5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}"
1235
- EndProject
1236
- Global
1237
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
1238
- Debug|Any CPU = Debug|Any CPU
1239
- Release|Any CPU = Release|Any CPU
1240
- EndGlobalSection
1241
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
1242
- {782E0C0A-10D3-444D-9640-263D03D2B20C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1243
- {782E0C0A-10D3-444D-9640-263D03D2B20C}.Debug|Any CPU.Build.0 = Debug|Any CPU
1244
- {782E0C0A-10D3-444D-9640-263D03D2B20C}.Release|Any CPU.ActiveCfg = Release|Any CPU
1245
- {782E0C0A-10D3-444D-9640-263D03D2B20C}.Release|Any CPU.Build.0 = Release|Any CPU
1246
- {5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1247
- {5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
1248
- {5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
1249
- {5C15FD5B-1975-4CEA-8F1B-C0C9174C60A9}.Release|Any CPU.Build.0 = Release|Any CPU
1250
- EndGlobalSection
1251
- GlobalSection(SolutionProperties) = preSolution
1252
- HideSolutionNode = FALSE
1253
- EndGlobalSection
1254
- EndGlobal
1255
- """,
1256
- new[]
1257
- {
1258
- "src/Some.Project/SomeProject.csproj",
1259
- "src/Some.Project.Test/Some.Project.Test.csproj",
1260
- }
1261
- ];
1262
- }
1263
629
  }