Skip to content

Commit 9f3bd23

Browse files
committed
Merge 6.0.2xx to main
# Conflicts: # .vsts-ci.yml # eng/Version.Details.xml # eng/Versions.props # src/BlazorWasmSdk/BlazorWasmSdk.slnf # src/Tests/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/WasmPublishIntegrationTest.cs
2 parents 6cdac2c + 87a92e9 commit 9f3bd23

24 files changed

+109
-47
lines changed

eng/build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ parameters:
1515
timeoutInMinutes: 180
1616

1717
jobs:
18-
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/release/6.0.1xx')) }}:
18+
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/release/6.0.2xx')) }}:
1919
- template: /eng/common/templates/job/onelocbuild.yml
2020
parameters:
2121
CreatePr: true
2222
LclSource: lclFilesfromPackage
2323
LclPackageId: 'LCL-JUNO-PROD-DOTNETSDK'
24-
MirrorBranch: release/6.0.1xx
24+
MirrorBranch: release/6.0.2xx
2525
MirrorRepo: sdk
2626
- template: /eng/common/templates/job/job.yml
2727
parameters:

src/Assets/TestProjects/XunitMulti/VSTestXunitDesktopAndNetCore.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
33

44
<PropertyGroup>
5-
<TargetFrameworks>net46;netcoreapp3.1</TargetFrameworks>
5+
<TargetFrameworks>net46;$(CurrentTargetFramework)</TargetFrameworks>
66
</PropertyGroup>
77

88
<PropertyGroup Condition="'$(TargetFramework)' == 'net46'">

src/Assets/TestProjects/x64SolutionBuild/x64SolutionBuild.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<PropertyGroup>
77
<OutputType>Exe</OutputType>
8-
<TargetFramework>netcoreapp1.1</TargetFramework>
8+
<TargetFramework>$(CurrentTargetFramework)</TargetFramework>
99
</PropertyGroup>
1010

1111
<Target Name="CheckPlatform" BeforeTargets="Build">

src/Tasks/Common/Logger.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,14 @@ private static void DebugThrowMissingOrIncorrectCode(string code, string message
127127
break;
128128

129129
default:
130+
130131
if (code != null)
131132
{
132-
throw new ArgumentException(
133-
"Message is prefixed with NETSDK error, but error codes should not be used for informational messages: "
134-
+ $"{code}:{message}");
133+
// Previously we would throw an error here, but that makes it hard to allow errors to be turned off but still displayed as messages
134+
// (which ResolveApppHosts does). So let's just let messages have NETSDK error codes if they want to also.
135+
//throw new ArgumentException(
136+
// "Message is prefixed with NETSDK error, but error codes should not be used for informational messages: "
137+
// + $"{code}:{message}");
135138
}
136139
break;
137140
}

src/Tasks/Common/MetadataKeys.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ internal static class MetadataKeys
2727
public const string FrameworkVersion = "FrameworkVersion";
2828
public const string IsTrimmable = "IsTrimmable";
2929
public const string RuntimeFrameworkName = "RuntimeFrameworkName";
30-
public const string RuntimePackRuntimeIdentifiers = "RuntimePackRuntimeIdentifiers";
3130

3231
// SDK Metadata
3332
public const string SDKPackageItemSpec = "SDKPackageItemSpec";
@@ -83,12 +82,17 @@ internal static class MetadataKeys
8382

8483
// Targeting packs
8584
public const string PackageConflictPreferredPackages = "PackageConflictPreferredPackages";
85+
public const string RuntimePackRuntimeIdentifiers = "RuntimePackRuntimeIdentifiers";
86+
public const string RuntimePackExcludedRuntimeIdentifiers = "RuntimePackExcludedRuntimeIdentifiers";
8687

8788
// Runtime packs
8889
public const string DropFromSingleFile = "DropFromSingleFile";
8990
public const string RuntimePackLabels = "RuntimePackLabels";
9091
public const string AdditionalFrameworkReferences = "AdditionalFrameworkReferences";
9192

93+
// Apphost packs
94+
public const string ExcludedRuntimeIdentifiers = "ExcludedRuntimeIdentifiers";
95+
9296
// Content files
9397
public const string PPOutputPath = "PPOutputPath";
9498
public const string CodeLanguage = "CodeLanguage";

src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
<PackageReference Include="Microsoft.Build" Version="$(MicrosoftBuildVersion)" ExcludeAssets="Runtime" />
5151
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkVersion)" ExcludeAssets="Runtime" />
5252
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" ExcludeAssets="Runtime" />
53-
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="2.1.0" />
5453
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
5554
<PackageReference Include="Microsoft.NET.HostModel" Version="$(MicrosoftNETHostModelVersion)" />
5655
<PackageReference Include="NuGet.ProjectModel" Version="$(NuGetProjectModelVersion)" />

src/Tasks/Microsoft.NET.Build.Tasks/NuGetUtils.NuGet.cs

+22-5
Original file line numberDiff line numberDiff line change
@@ -82,20 +82,37 @@ bool FileMatchesProjectLanguage()
8282

8383
public static string GetBestMatchingRid(RuntimeGraph runtimeGraph, string runtimeIdentifier,
8484
IEnumerable<string> availableRuntimeIdentifiers, out bool wasInGraph)
85+
{
86+
return GetBestMatchingRidWithExclusion(runtimeGraph, runtimeIdentifier,
87+
runtimeIdentifiersToExclude: null,
88+
availableRuntimeIdentifiers, out wasInGraph);
89+
}
90+
91+
public static string GetBestMatchingRidWithExclusion(RuntimeGraph runtimeGraph, string runtimeIdentifier,
92+
IEnumerable<string> runtimeIdentifiersToExclude,
93+
IEnumerable<string> availableRuntimeIdentifiers, out bool wasInGraph)
8594
{
8695
wasInGraph = runtimeGraph.Runtimes.ContainsKey(runtimeIdentifier);
8796

88-
HashSet<string> availableRids = new HashSet<string>(availableRuntimeIdentifiers);
97+
string bestMatch = null;
98+
99+
HashSet<string> availableRids = new HashSet<string>(availableRuntimeIdentifiers, StringComparer.Ordinal);
100+
HashSet<string> excludedRids = runtimeIdentifiersToExclude switch { null => null, _ => new HashSet<string>(runtimeIdentifiersToExclude, StringComparer.Ordinal) };
89101
foreach (var candidateRuntimeIdentifier in runtimeGraph.ExpandRuntime(runtimeIdentifier))
90102
{
91-
if (availableRids.Contains(candidateRuntimeIdentifier))
103+
if (bestMatch == null && availableRids.Contains(candidateRuntimeIdentifier))
104+
{
105+
bestMatch = candidateRuntimeIdentifier;
106+
}
107+
108+
if (excludedRids != null && excludedRids.Contains(candidateRuntimeIdentifier))
92109
{
93-
return candidateRuntimeIdentifier;
110+
// Don't treat this as a match
111+
return null;
94112
}
95113
}
96114

97-
// No compatible RID found in availableRuntimeIdentifiers
98-
return null;
115+
return bestMatch;
99116
}
100117
}
101118
}

src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -456,10 +456,12 @@ private void ProcessRuntimeIdentifier(
456456
{
457457
var runtimeGraph = new RuntimeGraphCache(this).GetRuntimeGraph(RuntimeGraphPath);
458458
var knownFrameworkReferenceRuntimePackRuntimeIdentifiers = selectedRuntimePack.RuntimePackRuntimeIdentifiers.Split(';');
459+
var knownFrameworkReferenceRuntimePackExcludedRuntimeIdentifiers = selectedRuntimePack.RuntimePackExcludedRuntimeIdentifiers.Split(';');
459460

460-
string runtimePackRuntimeIdentifier = NuGetUtils.GetBestMatchingRid(
461+
string runtimePackRuntimeIdentifier = NuGetUtils.GetBestMatchingRidWithExclusion(
461462
runtimeGraph,
462463
runtimeIdentifier,
464+
knownFrameworkReferenceRuntimePackExcludedRuntimeIdentifiers,
463465
knownFrameworkReferenceRuntimePackRuntimeIdentifiers,
464466
out bool wasInGraph);
465467

@@ -849,6 +851,8 @@ public KnownRuntimePack(ITaskItem item)
849851

850852
public string RuntimePackRuntimeIdentifiers => _item.GetMetadata(MetadataKeys.RuntimePackRuntimeIdentifiers);
851853

854+
public string RuntimePackExcludedRuntimeIdentifiers => _item.GetMetadata(MetadataKeys.RuntimePackExcludedRuntimeIdentifiers);
855+
852856
public string IsTrimmable => _item.GetMetadata(MetadataKeys.IsTrimmable);
853857

854858
public bool IsWindowsOnly => _item.HasMetadataValue("IsWindowsOnly", "true");

src/Tasks/Microsoft.NET.Build.Tasks/ResolveAppHosts.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,17 @@ private ITaskItem GetHostItem(string runtimeIdentifier,
221221
string appHostRuntimeIdentifiers = selectedAppHostPack.GetMetadata("AppHostRuntimeIdentifiers");
222222
string appHostPackPattern = selectedAppHostPack.GetMetadata("AppHostPackNamePattern");
223223
string appHostPackVersion = selectedAppHostPack.GetMetadata("AppHostPackVersion");
224+
string runtimeIdentifiersToExclude = selectedAppHostPack.GetMetadata(MetadataKeys.ExcludedRuntimeIdentifiers);
224225

225226
if (!string.IsNullOrEmpty(RuntimeFrameworkVersion))
226227
{
227228
appHostPackVersion = RuntimeFrameworkVersion;
228229
}
229230

230-
string bestAppHostRuntimeIdentifier = NuGetUtils.GetBestMatchingRid(
231+
string bestAppHostRuntimeIdentifier = NuGetUtils.GetBestMatchingRidWithExclusion(
231232
new RuntimeGraphCache(this).GetRuntimeGraph(RuntimeGraphPath),
232233
runtimeIdentifier,
234+
runtimeIdentifiersToExclude.Split(';'),
233235
appHostRuntimeIdentifiers.Split(';'),
234236
out bool wasInGraph);
235237

src/Tests/Microsoft.NET.Build.Tests/AppHostTests.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ private static string[] GetExpectedFilesFromBuild(TestAsset testAsset, string ta
3939
if (!string.IsNullOrEmpty(targetFramework))
4040
{
4141
var parsedTargetFramework = NuGetFramework.Parse(targetFramework);
42-
if (parsedTargetFramework.Version.Major >= 5)
43-
expectedFiles.Add($"ref/{testProjectName}.dll");
4442

4543
if (parsedTargetFramework.Version.Major < 6)
4644
expectedFiles.Add($"{testProjectName}.runtimeconfig.dev.json");
@@ -53,7 +51,7 @@ public AppHostTests(ITestOutputHelper log) : base(log)
5351
{
5452
}
5553

56-
[Theory]
54+
[RequiresMSBuildVersionTheory("17.1.0.60101")]
5755
[InlineData("netcoreapp3.1")]
5856
[InlineData("net5.0")]
5957
[InlineData("net6.0")]

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantAllResourcesInSatellite.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public GivenThatWeWantAllResourcesInSatellite(ITestOutputHelper log) : base(log)
2222
{
2323
}
2424

25-
[Fact]
25+
[RequiresMSBuildVersionFact("17.1.0.60101")]
2626
public void It_retrieves_strings_successfully()
2727
{
2828
TestSatelliteResources(Log, _testAssetsManager);
@@ -81,7 +81,6 @@ internal static void TestSatelliteResources(
8181
else
8282
{
8383
outputFiles.Add($"AllResourcesInSatellite{EnvironmentInfo.ExecutableExtension}");
84-
outputFiles.Add("ref/AllResourcesInSatellite.dll");
8584
outputFiles.Add("AllResourcesInSatellite.dll");
8685
outputFiles.Add("AllResourcesInSatellite.deps.json");
8786
outputFiles.Add("AllResourcesInSatellite.runtimeconfig.json");

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildACrossTargetedLibrary.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public GivenThatWeWantToBuildACrossTargetedLibrary(ITestOutputHelper log) : base
2020
{
2121
}
2222

23-
[Fact]
23+
[RequiresMSBuildVersionFact("17.1.0.60101")]
2424
public void It_builds_nondesktop_library_successfully_on_all_platforms()
2525
{
2626
var testAsset = _testAssetsManager
@@ -42,7 +42,6 @@ public void It_builds_nondesktop_library_successfully_on_all_platforms()
4242
$"{ToolsetInfo.CurrentTargetFramework}/Newtonsoft.Json.dll",
4343
$"{ToolsetInfo.CurrentTargetFramework}/NetStandardAndNetCoreApp.deps.json",
4444
$"{ToolsetInfo.CurrentTargetFramework}/NetStandardAndNetCoreApp{EnvironmentInfo.ExecutableExtension}",
45-
$"{ToolsetInfo.CurrentTargetFramework}/ref/NetStandardAndNetCoreApp.dll",
4645
"netstandard1.5/NetStandardAndNetCoreApp.dll",
4746
"netstandard1.5/NetStandardAndNetCoreApp.pdb",
4847
"netstandard1.5/NetStandardAndNetCoreApp.deps.json"

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,11 @@ public void It_builds_the_project_successfully_with_only_reference_assembly_set(
901901
}
902902
else
903903
{
904-
var refPath = Path.Combine(outputPath, "ref", "MainProject.dll");
904+
// Reference assembly should be produced in obj
905+
var refPath = Path.Combine(
906+
buildCommand.GetIntermediateDirectory(targetFramework: "net5.0").FullName,
907+
"ref",
908+
"MainProject.dll");
905909
File.Exists(refPath)
906910
.Should()
907911
.BeTrue();

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildASolutionWithNonAnyCPUPlatform.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ public void It_builds_solution_successfully()
3030
.Should()
3131
.Pass();
3232

33-
buildCommand.GetOutputDirectory("netcoreapp1.1", Path.Combine("x64", "Debug"))
33+
buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework, Path.Combine("x64", "Debug"))
3434
.Should()
3535
.OnlyHaveFiles(new[] {
36-
"x64SolutionBuild.runtimeconfig.dev.json",
3736
"x64SolutionBuild.runtimeconfig.json",
3837
"x64SolutionBuild.deps.json",
3938
"x64SolutionBuild.dll",
40-
"x64SolutionBuild.pdb"
39+
"x64SolutionBuild.pdb",
40+
"ref/x64SolutionBuild.dll",
41+
$"x64SolutionBuild{EnvironmentInfo.ExecutableExtension}"
4142
});
4243
}
4344
}

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToGenerateGlobalUsings_BlazorWasm.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public GivenThatWeWantToGenerateGlobalUsings_BlazorWasm(ITestOutputHelper log) :
1919
[RequiresMSBuildVersionFact("17.0.0.32901")]
2020
public void It_generates_blazorwasm_usings_and_builds_successfully()
2121
{
22-
var tfm = "net6.0";
22+
var tfm = ToolsetInfo.CurrentTargetFramework;
2323
var testProject = CreateTestProject(tfm);
2424
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
2525
var testAsset = _testAssetsManager.CreateTestProject(testProject);
@@ -53,7 +53,7 @@ public void It_generates_blazorwasm_usings_and_builds_successfully()
5353
[Fact]
5454
public void It_can_disable_blazorwasm_usings()
5555
{
56-
var tfm = "net6.0";
56+
var tfm = ToolsetInfo.CurrentTargetFramework;
5757
var testProject = CreateTestProject(tfm);
5858
testProject.AdditionalProperties["ImplicitUsings"] = "disable";
5959
var testAsset = _testAssetsManager.CreateTestProject(testProject);

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToGenerateGlobalUsings_DotNet.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public GivenThatWeWantToGenerateGlobalUsings_DotNet(ITestOutputHelper log) : bas
2121
[RequiresMSBuildVersionFact("17.0.0.32901")]
2222
public void It_can_generate_global_usings_and_builds_successfully()
2323
{
24-
var tfm = "net6.0";
24+
var tfm = ToolsetInfo.CurrentTargetFramework;
2525
var testProject = CreateTestProject(tfm);
2626
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
2727
var testAsset = _testAssetsManager.CreateTestProject(testProject);
@@ -52,7 +52,7 @@ public void It_can_generate_global_usings_and_builds_successfully()
5252
[Fact]
5353
public void Implicit_Usings_Are_Not_Enabled_By_Default()
5454
{
55-
var tfm = "net6.0";
55+
var tfm = ToolsetInfo.CurrentTargetFramework;
5656
var testProject = CreateTestProject(tfm);
5757
var testAsset = _testAssetsManager.CreateTestProject(testProject);
5858
var globalUsingsFileName = $"{testAsset.TestProject.Name}.GlobalUsings.g.cs";
@@ -71,7 +71,7 @@ public void Implicit_Usings_Are_Not_Enabled_By_Default()
7171
[RequiresMSBuildVersionFact("17.0.0.32901")]
7272
public void It_can_remove_specific_usings_in_project_file()
7373
{
74-
var tfm = "net6.0";
74+
var tfm = ToolsetInfo.CurrentTargetFramework;
7575
var testProject = CreateTestProject(tfm);
7676
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
7777
testProject.AddItem("Using", new Dictionary<string, string> { ["Remove"] = "System.IO" });
@@ -103,7 +103,7 @@ public void It_can_remove_specific_usings_in_project_file()
103103
[Fact]
104104
public void It_can_generate_custom_usings()
105105
{
106-
var tfm = "net6.0";
106+
var tfm = ToolsetInfo.CurrentTargetFramework;
107107
var testProject = CreateTestProject(tfm);
108108
testProject.ProjectChanges.Add(projectXml =>
109109
{
@@ -141,7 +141,7 @@ public void It_can_generate_custom_usings()
141141
[Fact]
142142
public void It_considers_switches_when_deduping()
143143
{
144-
var tfm = "net6.0";
144+
var tfm = ToolsetInfo.CurrentTargetFramework;
145145
var testProject = CreateTestProject(tfm);
146146
testProject.ProjectChanges.Add(projectXml =>
147147
{
@@ -187,7 +187,7 @@ public void It_considers_switches_when_deduping()
187187
public void It_can_persist_generatedfile_between_cleans()
188188
{
189189
// Regression test for https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1405579
190-
var tfm = "net6.0";
190+
var tfm = ToolsetInfo.CurrentTargetFramework;
191191
var testProject = CreateTestProject(tfm);
192192
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
193193
var testAsset = _testAssetsManager.CreateTestProject(testProject);

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToGenerateGlobalUsings_WebApp.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public GivenThatWeWantToGenerateGlobalUsings_WebApp(ITestOutputHelper log) : bas
2020
[RequiresMSBuildVersionFact("17.0.0.32901")]
2121
public void It_generates_web_implicit_usings_and_builds_successfully()
2222
{
23-
var tfm = "net6.0";
23+
var tfm = ToolsetInfo.CurrentTargetFramework;
2424
var testProject = CreateTestProject(tfm);
2525
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
2626
var testAsset = _testAssetsManager.CreateTestProject(testProject);
@@ -60,7 +60,7 @@ public void It_generates_web_implicit_usings_and_builds_successfully()
6060
[Fact]
6161
public void It_can_disable_web_usings()
6262
{
63-
var tfm = "net6.0";
63+
var tfm = ToolsetInfo.CurrentTargetFramework;
6464
var testProject = CreateTestProject(tfm);
6565
testProject.AdditionalProperties["ImplicitUsings"] = "disable";
6666
var testAsset = _testAssetsManager.CreateTestProject(testProject);

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToGenerateGlobalUsings_Worker.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public GivenThatWeWantToGenerateGlobalUsings_Worker(ITestOutputHelper log) : bas
2020
[RequiresMSBuildVersionFact("17.0.0.32901")]
2121
public void It_generates_worker_implicit_usings_and_builds_successfully()
2222
{
23-
var tfm = "net6.0";
23+
var tfm = ToolsetInfo.CurrentTargetFramework;
2424
var testProject = CreateTestProject(tfm);
2525
testProject.AdditionalProperties["ImplicitUsings"] = "enable";
2626
var testAsset = _testAssetsManager.CreateTestProject(testProject);
@@ -55,7 +55,7 @@ public void It_generates_worker_implicit_usings_and_builds_successfully()
5555
[Fact]
5656
public void It_can_disable_worker_usings()
5757
{
58-
var tfm = "net6.0";
58+
var tfm = ToolsetInfo.CurrentTargetFramework;
5959
var testProject = CreateTestProject(tfm);
6060
testProject.AdditionalProperties["ImplicitUsings"] = "disable";
6161
var testAsset = _testAssetsManager.CreateTestProject(testProject);

src/Tests/Microsoft.NET.Build.Tests/GivenThereAreDefaultItems.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,8 @@ public void Default_items_have_the_correct_relative_paths()
465465
"wwwroot/wwwsubfolder/wwwsubfolder.txt",
466466
});
467467
}
468-
469-
[Fact]
468+
469+
[RequiresMSBuildVersionFact("17.1.0.60101")]
470470
public void Compile_items_can_be_explicitly_specified_while_default_EmbeddedResource_items_are_used()
471471
{
472472
Action<XDocument> projectChanges = project =>

0 commit comments

Comments
 (0)