VS2013 不编译 ASP.NET MVC5 视图
VS2013 does not compile ASP.NET MVC5 views
我的 Visual Studio Ultimate 2013 Update 4 无法编译 ASP.NET MVC 5 次查看。
偶尔会在视图中发现编译错误,尽管编译总是成功的。智能感知也在视图上打开和关闭。我会说它在 VS2012 中工作得更好(我在那个版本上没有太多 MVC)。
我尝试将 <MvcBuildViews>true</MvcBuildViews>
添加到 .csproj 文件中,它曾经在 VS2010 中工作,但它不再工作了。
知道可能是什么问题吗?
更新:我正在寻找查看视图错误的方法,因为它发生在以前版本的 VS 中。
在解决方案资源管理器中右键单击您的 Web 项目。单击 Unload Project
。右键单击该项目并单击 Edit <projname>.csproj
。
确保你有这个元素(如果不存在则添加它)。
<Project>
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
</Project>
向下滚动到底部。您应该会看到一些评论 "To modify your build process, add your task inside one of the targets below and uncomment it." 在其下方添加此标记:
<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
。
这会将您的视图添加到编译步骤,如果发现错误,将停止您的构建。我发现这是一件好事,因为如果没有它,我有时不会注意到错误列表中的错误,直到我部署了我的站点然后手动点击它们。请注意,它会为您的构建步骤增加一些时间,从而显着减慢它的速度。根据您要实现的目标,您可能希望有选择地 enable/disable 它以实现快速构建 -> 测试工作流程。
此答案的灵感来自 Chris Hyne 对 MVCBuildViews not working correctly and Can Razor views be compiled? 的回答。
您的项目是否包含目标并挂接到构建事件之后?从命令行尝试 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 与您的进行比较。
我的 Visual Studio Ultimate 2013 Update 4 无法编译 ASP.NET MVC 5 次查看。
偶尔会在视图中发现编译错误,尽管编译总是成功的。智能感知也在视图上打开和关闭。我会说它在 VS2012 中工作得更好(我在那个版本上没有太多 MVC)。
我尝试将 <MvcBuildViews>true</MvcBuildViews>
添加到 .csproj 文件中,它曾经在 VS2010 中工作,但它不再工作了。
知道可能是什么问题吗?
更新:我正在寻找查看视图错误的方法,因为它发生在以前版本的 VS 中。
在解决方案资源管理器中右键单击您的 Web 项目。单击 Unload Project
。右键单击该项目并单击 Edit <projname>.csproj
。
确保你有这个元素(如果不存在则添加它)。
<Project>
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
</Project>
向下滚动到底部。您应该会看到一些评论 "To modify your build process, add your task inside one of the targets below and uncomment it." 在其下方添加此标记:
<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
。
这会将您的视图添加到编译步骤,如果发现错误,将停止您的构建。我发现这是一件好事,因为如果没有它,我有时不会注意到错误列表中的错误,直到我部署了我的站点然后手动点击它们。请注意,它会为您的构建步骤增加一些时间,从而显着减慢它的速度。根据您要实现的目标,您可能希望有选择地 enable/disable 它以实现快速构建 -> 测试工作流程。
此答案的灵感来自 Chris Hyne 对 MVCBuildViews not working correctly and Can Razor views be compiled? 的回答。
您的项目是否包含目标并挂接到构建事件之后?从命令行尝试 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 与您的进行比较。