项目文件已经建议通过this answer执行此操作。但是,这对我们的案例来说还不够。我们碰巧在另一个项目中共享了视图。有几个文件使用共享的.master页面,在尝试使用aspnet_compiler时会导致编译错误。
我尝试用这种方式完成它:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<PropertyGroup>
<TempFolder>$(ProjectDir)\..\temp</TempFolder>
</PropertyGroup>
<AspNetCompiler VirtualPath="temp" TargetPath="$(TempFolder)" PhysicalPath="other views location" />
<AspNetCompiler VirtualPath="temp" TargetPath="$(TempFolder)" PhysicalPath="$(ProjectDir)" />
</Target>
事实证明,aspnet_compiler要求TargetPath
文件夹为空,所以这是不行的。仅使用VirtualPath
而不使用TargetPath
进行尝试不起作用,因为VirtualPath
是临时的,并且不会转移到第二个编译器调用。
有没有办法实现这个目标?我们显然可以将母版页复制到这个项目中,但这不是一个很好的解决方案。
答案 0 :(得分:0)
执行此操作的唯一方法是将Razor视图编译到DLL中,以便它们可供任何应用程序使用DLL的引用。 Razor团队为此目的创建了Razor Generator。