根据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:\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中显示视图错误(我会接受一个仅限于此的答案),但我也是在一台机器上使用MSBuild构建生产环境的情况,该机器甚至不一定安装了IIS.
解决方法
我建议你启用
诊断级别日志记录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