Make Razor SDK support refs and views on publish
These are default behaviors for precompilation.
This commit is contained in:
parent
d1984aa44b
commit
b5554a8038
|
|
@ -31,6 +31,22 @@
|
||||||
|
|
||||||
<!-- File name (without extension) of the assembly produced by Razor -->
|
<!-- File name (without extension) of the assembly produced by Razor -->
|
||||||
<RazorTargetName Condition="'$(RazorTargetName)'==''">$(TargetName).PrecompiledViews</RazorTargetName>
|
<RazorTargetName Condition="'$(RazorTargetName)'==''">$(TargetName).PrecompiledViews</RazorTargetName>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Set to true to copy RazorGenerate items to the publish directory (.cshtml) files.
|
||||||
|
|
||||||
|
Typically Razor files are not needed for a published application if they participate in compilation at build-time
|
||||||
|
or publish-time. By default, the Razor SDK will suppress the copying of RazorGenerate items to the publish directory.
|
||||||
|
-->
|
||||||
|
<CopyRazorGenerateFilesToPublishDirectory Condition="'$(CopyRazorGenerateFilesToPublishDirectory)'==''">false</CopyRazorGenerateFilesToPublishDirectory>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Set to true to copy reference assembly items to the publish directory (.cshtml) files.
|
||||||
|
|
||||||
|
Typically reference assemblies are not needed for a published application if Razor compilation occurs at build-time
|
||||||
|
or publish-time. By default, the Razor SDK will suppress the copying of reference assemblies to the publish directory.
|
||||||
|
-->
|
||||||
|
<CopyRefAssembliesToPublishDirectory Condition="'$(CopyRefAssembliesToPublishDirectory)'==''">false</CopyRefAssembliesToPublishDirectory>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -314,14 +330,16 @@
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Called after ComputeFilesToPublish - this target is called when publishing the project to get a list of
|
Called after ComputeFilesToPublish and ComputeRefAssembliesToPublish but before CopyFilesToPublishDirectory - this target is called when
|
||||||
files to the output directory.
|
publishing the project to get a list of files to the output directory.
|
||||||
-->
|
-->
|
||||||
<Target
|
<Target
|
||||||
Name="_RazorComputeFilesToPublish"
|
Name="_RazorComputeFilesToPublish"
|
||||||
AfterTargets="ComputeFilesToPublish">
|
AfterTargets="ComputeRefAssembliesToPublish"
|
||||||
|
Condition="'@(RazorGenerate)'!='' and ('$(RazorCompileOnBuild)'=='true' or '$(RazorCompileOnPublish)'=='true')">
|
||||||
|
|
||||||
<ItemGroup Condition="'@(RazorGenerate)'!='' and ('$(RazorCompileOnBuild)'=='true' or '$(RazorCompileOnPublish)'=='true')">
|
<!-- If we generated an assembly/pdb then include those -->
|
||||||
|
<ItemGroup>
|
||||||
<ResolvedFileToPublish Include="@(RazorIntermediateAssembly)" Condition="'$(CopyBuildOutputToPublishDirectory)'=='true'">
|
<ResolvedFileToPublish Include="@(RazorIntermediateAssembly)" Condition="'$(CopyBuildOutputToPublishDirectory)'=='true'">
|
||||||
<RelativePath>@(RazorIntermediateAssembly->'%(Filename)%(Extension)')</RelativePath>
|
<RelativePath>@(RazorIntermediateAssembly->'%(Filename)%(Extension)')</RelativePath>
|
||||||
</ResolvedFileToPublish>
|
</ResolvedFileToPublish>
|
||||||
|
|
@ -330,6 +348,24 @@
|
||||||
</ResolvedFileToPublish>
|
</ResolvedFileToPublish>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
RazorGenerate items are usually populated from the '.cshtml' files in @(Content). These are published by default
|
||||||
|
so all we need to do is exclude them.
|
||||||
|
-->
|
||||||
|
<ItemGroup Condition="'$(CopyRazorGenerateFilesToPublishDirectory)'=='false'">
|
||||||
|
<ResolvedFileToPublish Remove="%(RazorGenerate.FullPath)"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The ref assemblies are published whenever PreserveCompilationContext is true, which we expect to be true for
|
||||||
|
most usages of Razor. There's no setting that excludes just the ref assemblies, so we do it ourselves.
|
||||||
|
-->
|
||||||
|
<ItemGroup Condition="'$(CopyRefAssembliesToPublishDirectory)'=='false'">
|
||||||
|
<ResolvedFileToPublish
|
||||||
|
Remove="%(ResolvedFileToPublish.Identity)"
|
||||||
|
Condition="'%(ResolvedFileToPublish.RelativePath)'=='$(RefAssembliesFolderName)\%(Filename)%(Extension)'"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb");
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.dll");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.dll");
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
||||||
|
|
||||||
|
// By default refs and .cshtml files will not be copied on publish
|
||||||
|
Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "refs"), "*.dll");
|
||||||
|
Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "Views"), "*.cshtml");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -43,6 +47,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb");
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.dll");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.dll");
|
||||||
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
||||||
|
|
||||||
|
// By default refs and .cshtml files will not be copied on publish
|
||||||
|
Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "refs"), "*.dll");
|
||||||
|
Assert.FileCountEquals(result, 0, Path.Combine(PublishOutputPath, "Views"), "*.cshtml");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -107,6 +115,27 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
Assert.FileDoesNotExist(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
Assert.FileDoesNotExist(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
[InitializeTestProject("SimpleMvc")]
|
||||||
|
public async Task Publish_IncludeCshtmlAndRefAssemblies_CopiesFiles()
|
||||||
|
{
|
||||||
|
var result = await DotnetMSBuild("Publish", "/p:RazorCompileOnPublish=true /p:CopyRazorGenerateFilesToPublishDirectory=true /p:CopyRefAssembliesToPublishDirectory=true");
|
||||||
|
|
||||||
|
Assert.BuildPassed(result);
|
||||||
|
|
||||||
|
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.dll");
|
||||||
|
Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
||||||
|
|
||||||
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.dll");
|
||||||
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.pdb");
|
||||||
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.dll");
|
||||||
|
Assert.FileExists(result, PublishOutputPath, "SimpleMvc.PrecompiledViews.pdb");
|
||||||
|
|
||||||
|
// By default refs and .cshtml files will not be copied on publish
|
||||||
|
Assert.FileExists(result, PublishOutputPath, "refs", "mscorlib.dll");
|
||||||
|
Assert.FileCountEquals(result, 8, Path.Combine(PublishOutputPath, "Views"), "*.cshtml");
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
[InitializeTestProject("AppWithP2PReference", "ClassLibrary")]
|
[InitializeTestProject("AppWithP2PReference", "ClassLibrary")]
|
||||||
public async Task Publish_WithP2P_AndRazorCompileOnBuild_CopiesRazorAssembly()
|
public async Task Publish_WithP2P_AndRazorCompileOnBuild_CopiesRazorAssembly()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue