我的Visual Studio Ultimate 2013 Update 4无法编译ASP.NET MVC 5视图。
虽然编译总是成功的,但偶尔会在视图上发现编译错误。 Intellisense也在视图上打开和关闭。我会说它在VS2012中工作得更好(我在该版本上没有太多的MVC)。
我曾尝试将<MvcBuildViews>true</MvcBuildViews>
添加到.csproj文件中,该文件用于在VS2010中工作,但它不再起作用了。
知道可能是什么问题吗?
更新:我正在寻找在视图中查看错误的方法,就像之前版本的VS中发生的一样。
答案 0 :(得分:31)
在解决方案资源管理器中右键单击您的Web项目。点击Unload Project
。右键单击该项目,然后单击Edit <projname>.csproj
。
确保您拥有此元素(如果它不存在则添加它)。
<Project>
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
</Project>
向下滚动到底部。您应该看到一些注释&#34;要修改您的构建过程,请将您的任务添加到下面的一个目标中并取消注释。&#34;在此之下,添加此标记:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<ItemGroup>
<ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
<ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<Delete Files="@(ExtraWebConfigs)" />
<RemoveDir Directories="@(ExtraPackageTmp)" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
(如果您没有看到我提到的评论,上面的代码应该有根<Project>
节点的父节点)
关闭.csproj
文件,然后在解决方案资源管理器中右键单击您的项目,然后点击Reload Project
。
这会将您的视图添加到编译步骤,如果发现错误,将停止构建。我发现这是一件好事,因为没有它,我有时会在错误列表中发现错误,直到我部署了我的网站,然后手动点击它们。请注意,它会为您的构建步骤增加一些时间,从而大大减慢它的速度。根据您尝试实现的目标,您可能希望有选择地启用/禁用它以实现快速构建 - &gt;测试工作流程。
这个答案的灵感来自Chris Hyne对MVCBuildViews not working correctly和Can Razor views be compiled?的回答。
答案 1 :(得分:15)
您的项目是否包含目标并在构建事件后挂钩?从命令行尝试msbuild WebApplication1.csproj /t:MvcBuildViews
,它将检查您是否同时定义了默认属性。
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
尝试在VS2013U4中创建一个空白的MVC项目,并将csproj与您的项目进行比较。