我已将MvcBuildViews
元素设置为true,因此我的MVC 3项目也会编译视图。
然而,正因为如此,我们的构建服务器失败了构建。我一直在寻找可能的原因,但我的问题似乎与常见问题不同:
错误:_Layout.cshtml(xx): The name "Element" does not exist in the current context.
在这种情况下,Element
是我们对Helper视图的引用,调用其中一个方法。
知道问题可能是什么?
(顺便说一句,构建服务器是TFS2010)
答案 0 :(得分:5)
我发现了问题的根本问题。我在这里更新,以便每个人都可以从我的情况中学习。
TFS构建服务器一直在失败,所以为了继续项目,我只是编辑了MVC项目,因此它不会编译服务器上的视图,而只是在我们的开发机器上。为了做到这一点,我改变了
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
到
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true' AND '$(BuildingInsideVisualStudio)'=='true'">
当我们完成所有这些并将构建部署到实际环境时,我发现在我们部署的环境中弹出了同样的错误。我去看了一下部署包,结果却发现我的帮助器视图Element.cshtml
不在App_Code
文件夹中,应该在那里。
我再次打开项目文件并搜索对该文件的引用。我发现在该特定参考中,设置是
<None Include="App_Code\Element.cshtml" />
而不是
<Content Include="App_Code\Element.cshtml" />
我只是改变了引用的方式(不知道它是如何形成的)并且一切都像魅力一样。
故事的道德:注意所说的错误。
现在我很好奇为什么它不会在我们的开发机器上失败。可能是因为构建服务器有一个不同的输出文件夹,所以它不会在输出中找到.cshtml?也许这是其他一些问题......
答案 1 :(得分:0)