VS2013不编译ASP.NET MVC5视图

时间:2015-02-03 00:02:14

标签: asp.net-mvc visual-studio razor visual-studio-2013 asp.net-mvc-5

我的Visual Studio Ultimate 2013 Update 4无法编译ASP.NET MVC 5视图。

虽然编译总是成功的,但偶尔会在视图上发现编译错误。 Intellisense也在视图上打开和关闭。我会说它在VS2012中工作得更好(我在该版本上没有太多的MVC)。

我曾尝试将<MvcBuildViews>true</MvcBuildViews>添加到.csproj文件中,该文件用于在VS2010中工作,但它不再起作用了。

知道可能是什么问题吗?

更新:我正在寻找在视图中查看错误的方法,就像之前版本的VS中发生的一样。

2 个答案:

答案 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(&quot;$(BaseIntermediateOutputPath)&quot;, &quot;PackageTmp&quot;, 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 correctlyCan 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与您的项目进行比较。