在类库中预编译Razor视图

时间:2019-02-25 23:50:26

标签: c# asp.net-mvc msbuild aspnet-compiler

我使用VS2015和MVC 5.2.3,试图将包括Razor视图在内的功能领域转移到类库,以便可以在多个项目之间共享它。

我使用通常描述的MvcBuildViews工具,并使用如下所示的设置,因为它通常会在发布前捕获拼写错误:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
        <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
</Target>

这与主项目本身可以很好地工作,但是我无法使其与库一起使用,相反,出现以下编译器错误:

  

web.config(41):错误ASPCONFIG:无法加载文件或程序集   'System.Web.Mvc,版本= 5.2.3.0,文化=中性,   PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。的   系统找不到指定的文件。

所引用的web.config部分显示如下:

<system.web>
    <compilation>
        <assemblies>
            <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />                
        </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.6"/>
</system.web>

所有设置看起来都与主项目非常相似,并且实验一直没有结果,并且使我回到上面的相同基本错误中。必需的参考均已设置,并且与主项目相同。

我了解csproj中的AspNetCompiler标记是 aspnet_compiler.exe 过程的包装,但是与主项目相比,我看不出类库中的编译环境有什么不同

是否有可能在此标记中将特定的程序集搜索文件夹传递给编译器? -由于System.Web.Mvc.dll程序集确实存在,因此在类库项目的bin \ Release文件夹中。还是有更好的方法?

关于 aspnet_compiler.exe 内部过程的详细信息很少,而且似乎没有冗长的诊断模式。

我应该如何进行呢?

0 个答案:

没有答案