加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在构建时尝试构建ASP MVC视图时出错

发布时间:2020-12-16 04:25:36 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP MVC 4项目.它起始于MVC 1,因此它使用旧式ASPX / ASCX视图.我希望在构建时编译视图,主要是为了获得编译时错误检查(并且重要的是,直接在Visual Studio中显示错误).我正在使用IIS Express作为调试服务器在Visual Studio Pro 2015中进行开发. 根据ms
我有一个ASP MVC 4项目.它起始于MVC 1,因此它使用旧式ASPX / ASCX视图.我希望在构建时编译视图,主要是为了获得编译时错误检查(并且重要的是,直接在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 – 我将项目配置为在dev中作为子目录/本地运行,所以我尝试了,并且.vs文件夹中的配置中的站点名称没有任何效果.

我应该更改VirtualPath(如果是这样的话)或者是否有其他配置缺少临时工作?

编辑

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

编辑2

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

<site name="CarWeb-Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:Usersadam.conwayDocumentsMy Web SitesCarWeb-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中显示视图错误(我会接受一个仅限于此的答案),但我也是在一台机器上使用MSBuild构建生产环境的情况,该机器甚至不一定安装了IIS.

解决方法

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时正在使用的参数(特别是什么路径).您也可以从log& amp;在cmd.exe中手动调用aspnet_compiler.exe.

最可能的问题是在PhysicalPath属性中,而不是在VirtualPath中,似乎VirtualPath属性不会影响构建.检查这些答案:

> VirtualPath in AspNetCompiler MSBuild Task – does it have to be equal to the final deployed Virtual Path?
> Why do I need VirtualPath property for AspNetCompiler task

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读