2012-03-15 66 views
3

我已经将MvcBuildViews元素设置为true,因此我的MVC 3项目也会编译视图。编译MVC 3视图与构建服务器上的视图助手失败

但是,正因为如此,我们的构建服务器无法构建构建。我已经搜查周围可能的原因,但我的问题似乎是从常见的不同:

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

在这种情况下Element是我们正在做的助手视图的引用,调用之一的方法。

任何想法可能是什么问题?

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

+0

你能展现_Layout.cshtml? – 2012-03-15 15:30:13

+0

这是一个非常大的文件,我不能真正显示NDA协议的代码。不过,你究竟想要检查什么?有错误的具体路线是什么更多的,一个助手打电话:'@helper PutElement(){@ Element.Method(PARAM,PARAM,PARAM)}' – Alpha 2012-03-15 15:52:52

回答

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?也许这件事情对于一些其他的问题...