asp.net mvc 4网站拒绝建立在teamcity的基础上

asp.net mvc 4网站拒绝建立在teamcity的基础上,asp.net,asp.net-mvc-4,teamcity,Asp.net,Asp.net Mvc 4,Teamcity,我有一个带有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 ref

我有一个带有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.NETMVC4,重新启动了机器,并尝试了其他一切,但没有成功


有什么想法吗?

我想了解一些事情:

  • 确保您的NuGet包在构建过程中被适当地下拉
  • 确保项目没有在某处引用旧的MVC 3程序集。可能nant/msbuild生成脚本正在某处复制旧程序集
  • 对我来说,我的CI服务器(TeamCity)不会通过Web平台安装程序使用MVC4。不知道为什么

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

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

    例如:

    Update-Package WebGrease -Reinstall
    
    MVC项目模板虽然使用NuGet软件包,但由于某些原因,它们没有连接到整个软件包恢复机制中,因此重新安装它们会强制执行此操作。实际上,我认为您是通过MVC4的组件包安装MVC4的


    卢克

    我不确定这是否有用。但我也有同样的问题。我试着做的是使用EnableNuGetPackageRestore,我试着恢复它以及它导致问题的一些地方(从测试项目而不是MVC项目恢复nuget包。我不知道为什么,但如果我发现了,我肯定会更新线程)。我所做的就是关注我的博客。再添加一个构建步骤NuGet安装程序帮助我解决了这个问题。(注意:如果您使用的是内部nuget package server,则需要在源代码中指定相同的名称)。请让我知道,如果你仍然有问题,我可以提供任何帮助。快乐大厦

    这些特定程序集不是ASP.NET MVC 4的一部分,而是单独下载的(即nuget软件包)。检查这些nuget包是否是被拉到构建服务器的源的一部分这会导致什么结果?我也有这个问题,包恢复启用,问题只在TC盒。我有一个类似的问题。您需要从项目文件夹中访问bin文件夹并手动删除它。之后,再次构建应用程序(这是“清洁解决方案”选项的作用)。之后,您将在本地环境中看到所有相同的错误,因此您可以轻松地修复它们。您还可以通过观察所有引用都指向您的计算机中确实存在的目录来确保解决方案的csproj文件配置良好(如果您更改/重新排序了解决方案文件最初创建时的目录,则可能会发生这种情况)。