在编译视图时如何包含来自其他项目的视图文件?

时间:2013-06-20 19:13:54

标签: asp.net asp.net-mvc asp.net-mvc-3 msbuild

项目文件已经建议通过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是临时的,并且不会转移到第二个编译器调用。

有没有办法实现这个目标?我们显然可以将母版页复制到这个项目中,但这不是一个很好的解决方案。

1 个答案:

答案 0 :(得分:0)

执行此操作的唯一方法是将Razor视图编译到DLL中,以便它们可供任何应用程序使用DL​​L的引用。 Razor团队为此目的创建了Razor Generator