在构建服务器上使用视图助手编译MVC 3视图失败

时间:2012-03-15 15:27:41

标签: asp.net-mvc-3 tfsbuild

我已将MvcBuildViews元素设置为true,因此我的MVC 3项目也会编译视图。

然而,正因为如此,我们的构建服务器失败了构建。我一直在寻找可能的原因,但我的问题似乎与常见问题不同:

错误:_Layout.cshtml(xx): The name "Element" does not exist in the current context.

在这种情况下,Element是我们对Helper视图的引用,调用其中一个方法。

知道问题可能是什么?

(顺便说一句,构建服务器是TFS2010)

2 个答案:

答案 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)