gpt4 book ai didi

asp.net-mvc - 尝试在构建时构建 ASP MVC View 时出错

转载 作者:行者123 更新时间:2023-12-02 02:47:05 24 4
gpt4 key购买 nike

我有一个 ASP MVC 4 项目。它始于 MVC 1,因此使用旧式 ASPX/ASCX View 。我希望在构建时编译 View ,主要是为了进行编译时错误检查(而且重要的是,让错误直接显示在 Visual Studio 中)。我正在使用 IIS Express 作为调试服务器在 Visual Studio Pro 2015 中进行开发。

根据 msdn , Haacked 以及这里的问题,例如 this我已设置以下 .vbproj:

<MvcBuildViews>true</MvcBuildViews>

还在我的 .vbproj 中创建了一个任务

<Target Name="BuildViews" Condition="'$(MvcBuildViews)'=='true'" AfterTargets="Build">
<Message Importance="normal" Text="Precompiling views" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

但是,这在尝试构建时给了我一个错误:

'/temp' is not a valid IIS application.

作为一个文件,它只引用ASPNETCOMPILER

我已经尝试了各种替代方案作为VirtualPath - 我将项目配置为作为开发中的子目录/local运行,所以我尝试了这一点,并且该网站.vs 文件夹中的配置名称没有任何作用。

我应该更改VirtualPath(如果是的话,应该更改什么),或者是否缺少一些其他配置才能使temp正常工作?

编辑

此外,我在运行命令行 MSBuild 时遇到相同的错误。对于我的实际生产系统,我有一个脚本,它使用命令行 MSBuild 进行构建,然后将构建的包移动到产品服务器并进行部署。因此,在构建时不会有 IIS Express(或 IIS 运行)。您是否需要连接一个 Web 服务器来编译 View ?

编辑2

我对这里对 virtulPath 的需求以及与 Web 服务器的明显连接感到困惑。一些建议的解决方案涉及配置 IIS。据我了解,IIS Express(我用于调试)甚至不一定要在成功构建之后才能运行?无论如何,我的应用程序在虚拟目录中运行得非常愉快(/local 在 Debug模式下),但将其用作值不起作用。如果重要的话,这是我的项目中 .vs 文件夹中 applicationhost.config 的相关部分(我尝试将相同的路径放入 Documents/IIS Express 中的 applciationhost.config 中):

 <site name="CarWeb-Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\adam.conway\Documents\My Web Sites\CarWeb-Site" />
</application>
<application path="/local" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="filesystem path to my project" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:57047:localhost" />
<binding protocol="http" bindingInformation="*:57047:*" />
</bindings>
</site>

所以我真的不明白为什么 VirtualPath="/" 不起作用,因为那是这些配置中引用的虚拟路径。

虽然我的主要目的是在 Visual Studio 中显示 View 错误(并且我会接受仅限于此的答案),但我在一台不一定有 IIS 的计算机上使用 MSBuild 构建生产环境也是如此安装。

最佳答案

AspNetCompiler 调用 aspnet_compiler.exe (https://msdn.microsoft.com/en-us/library/ms229863.aspx?f=255&MSPPError=-2147217396)。在 Visual Studio 错误列表中,对此 exe 的调用显示为 ASPNETCOMPILER。

我建议您启用诊断级别日志记录https://msdn.microsoft.com/en-us/library/jj651643.aspx ,然后在构建日志中搜索 aspnet_compiler.exe 字符串,并检查调用 aspnet_compiler.exe 时使用的参数(特别是路径)。您也可以从日志中复制并在cmd.exe中手动调用aspnet_compiler.exe。

最有可能的问题是在PhysicalPath属性中,而不是在VirtualPath中,看起来VirtualPath属性不会影响构建。检查这些答案:

如果您需要 MSBuild 和 Visual Studio 的单独路径,您可以使用此技术 http://web4.codeproject.com/Articles/156989/Resolve-temp-global-asax-error-ASPPARSE-Could?display=Print

关于asp.net-mvc - 尝试在构建时构建 ASP MVC View 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42409414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com