1

我有一个带有 teamcity 的 Windows Server 2003 盒子,我将其用作构建/部署服务器。我签入了一个新的 asp.net mvc 4 项目,它出现以下错误:

App_Start\BundleConfig.cs(2, 18): error CS0234: The type or namespace name 'Optimization' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)

Controllers\AccountController.cs(8, 7): error CS0246: The type or namespace name 'DotNetOpenAuth' could not be found (are you missing a using directive or an assembly reference?)

Global.asax.cs(7, 18): error CS0234: The type or namespace name 'Optimization' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)

Models\AccountModels.cs(4, 45): error CS0234: The type or namespace name 'Schema' does not exist in the namespace 'System.ComponentModel.DataAnnotations' (are you missing an assembly reference?)

App_Start\BundleConfig.cs(9, 44): error CS0246: The type or namespace name 'BundleCollection' could not be found (are you missing a using directive or an assembly reference?) 

我已经在那个盒子上安装了 asp.net mvc 4,重新启动机器并尝试了其他所有方法,但没有任何运气。

有任何想法吗?

4

3 回答 3

2

对我来说,我的 CI 服务器 (TeamCity) 不会通过 Web 平台安装程序采用 MVC 4。不知道为什么。

所以我检查了 TC 构建日志中的黄色警告,寻找它试图解决的参考。

对于每一个,然后我在项目/解决方案中查找相应的 NuGet 包并重新安装它。这会使用包还原对其进行设置,以便 TeamCity/MSBuild 在构建期间对其进行还原。

例如:

Update-Package WebGrease -Reinstall

MVC 项目模板,虽然它使用 NuGet 包,但由于某种原因,它们并未连接到整个包还原机制中,因此重新安装它们会强制执行此操作。实际上,我想您正在通过其组成包安装 MVC 4。

卢克

于 2013-06-26T17:18:06.440 回答
0

我会调查的几件事:

  1. 确保在构建期间适当地下拉 NuGet 包。文档
  2. 确保项目不再在某处引用旧的 MVC 3 程序集。也许 nant/msbuild 构建脚本正在某处复制旧程序集?
于 2012-11-28T15:54:38.447 回答
0

我不确定这是否会有所帮助。但我有同样的问题。我试图做的是使用 EnableNuGetPackageRestore 我试图恢复它以及它导致问题的一些地方(从测试项目而不是 MVC 项目恢复 nuget 包。我不知道为什么但如果我发现我肯定会更新线程) . 我所做的是关注来自http://blog.jetbrains.com/teamcity/2013/08/nuget-package-restore-with-teamcity/的博客。再添加一个构建步骤 NuGet Installer 帮助我解决了问题。(注意:如果您使用的是内部 nuget 包服务器,则需要在 Sources 中指定相同的内容)。如果您仍有问题,请告诉我,我可以提供任何帮助。快乐建筑!!

于 2014-01-03T21:16:15.727 回答