Update Razor SDK packing logic to not include Pack at properties layer.

- Added test to verify that no-build scenarios work as expected.

#2378
This commit is contained in:
N. Taylor Mullen 2018-06-20 15:14:11 -07:00
parent ca2d5738d6
commit 2d5a1737a2
3 changed files with 53 additions and 4 deletions

View File

@ -67,10 +67,7 @@ Copyright (c) .NET Foundation. All rights reserved.
</PropertyGroup>
<ItemGroup Condition="'$(EnableDefaultItems)' == 'true' And '$(EnableDefaultContentItems)' == 'true'">
<Content Include="**\*.cshtml" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);$(DefaultWebContentItemExcludes)">
<Pack>$(IncludeRazorContentInPack)</Pack>
</Content>
<Content Include="**\*.cshtml" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);$(DefaultWebContentItemExcludes)" />
<None Remove="**\*.cshtml" />
</ItemGroup>

View File

@ -74,6 +74,11 @@ Copyright (c) .NET Foundation. All rights reserved.
ResolveRazorGenerateInputs
</PrepareForBuildDependsOn>
<GenerateNuspecDependsOn>
ResolveRazorGenerateInputs;
$(GenerateNuspecDependsOn)
</GenerateNuspecDependsOn>
<PrepareForRunDependsOn>
_RazorPrepareForRun;
$(PrepareForRunDependsOn)
@ -326,6 +331,13 @@ Copyright (c) .NET Foundation. All rights reserved.
<Content Condition="'%(Content.Extension)'=='.cshtml'" CopyToPublishDirectory="Never" />
</ItemGroup>
<ItemGroup Condition="
'$(ResolvedRazorCompileToolset)'=='RazorSdk' and
'$(EnableDefaultRazorGenerateItems)'=='true'">
<Content Condition="'%(Content.Extension)'=='.cshtml'" Pack="$(IncludeRazorContentInPack)" />
</ItemGroup>
</Target>
<Target Name="AssignRazorGenerateTargetPaths" Condition="'@(RazorGenerate)' != ''">

View File

@ -15,6 +15,46 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
{
}
[Fact]
[InitializeTestProject("ClassLibrary")]
public async Task Pack__NoBuild_Works_IncludesRazorAssembly()
{
var result = await DotnetMSBuild("Build");
Assert.BuildPassed(result);
result = await DotnetMSBuild("Pack", "/p:NoBuild=true");
Assert.BuildPassed(result);
Assert.FileExists(result, OutputPath, "ClassLibrary.dll");
Assert.FileExists(result, OutputPath, "ClassLibrary.Views.dll");
if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
// Travis on OSX produces different full paths in C# and MSBuild
Assert.NuspecContains(
result,
Path.Combine("obj", Configuration, "ClassLibrary.1.0.0.nuspec"),
$"<file src=\"{Path.Combine(Project.DirectoryPath, "bin", Configuration, "netstandard2.0", "ClassLibrary.Views.dll")}\" " +
$"target=\"{Path.Combine("lib", "netstandard2.0", "ClassLibrary.Views.dll")}\" />");
Assert.NuspecDoesNotContain(
result,
Path.Combine("obj", Configuration, "ClassLibrary.1.0.0.nuspec"),
$"<file src=\"{Path.Combine(Project.DirectoryPath, "bin", Configuration, "netstandard2.0", "ClassLibrary.Views.pdb")}\" " +
$"target=\"{Path.Combine("lib", "netstandard2.0", "ClassLibrary.Views.pdb")}\" />");
}
Assert.NuspecDoesNotContain(
result,
Path.Combine("obj", Configuration, "ClassLibrary.1.0.0.nuspec"),
@"<files include=""any/netstandard2.0/Views/Shared/_Layout.cshtml"" buildAction=""Content"" />");
Assert.NupkgContains(
result,
Path.Combine("bin", Configuration, "ClassLibrary.1.0.0.nupkg"),
Path.Combine("lib", "netstandard2.0", "ClassLibrary.Views.dll"));
}
[Fact]
[InitializeTestProject("ClassLibrary")]
public async Task Pack_Works_IncludesRazorAssembly()