【问题标题】:TeamCity - Missing 'Microsoft.Web.Infrastructure'TeamCity - 缺少“Microsoft.Web.Infrastructure”
【发布时间】:2015-06-24 06:10:33
【问题描述】:

我一直在浏览 StackOverflow,探索我的问题的可能解决方案。出于某种原因,TeamCity 无法找到“Microsoft.Web.Infrastructure”,但我已经安装了所有必需的 .Net 包。但是,我已经在本地运行了所有测试,并且在 Visual Studio 中构建项目返回了成功的构建。

这是我遇到的错误:

App_Start\NinjectWebCommon.cs(9, 40):错误 CS0234:命名空间“Microsoft.Web.Infrastructure”中不存在类型或命名空间名称“DynamicModuleHelper”(您是否缺少程序集引用?)

我尝试过的解决方案

  1. 在 Visual Studio 中,一个 StackOverflow 线程指示我将引用“Microsoft.Web.Infrastructure”选项“复制本地”设置为 true。这返回了与上述错误相同的结果。
  2. 我已经删除了所有对“Microsoft.Web.Infrastructure”的引用并重新安装了这个包,我还重新安装了 Ninject。我没有指定特定版本。同样,在本地构建成功并没有那么成功 - 发生了同样的错误。

有没有人遇到过这样的问题?我还完成了 GIT 存储库的全新克隆,恢复了所有 NuGet 包(TeamCity 也这样做了),并且构建得非常好。

【问题讨论】:

  • 在删除包文件夹中的所有内容并验证它是否已通过构建输出窗口从 nuget 中拉下后,您是否完成了完整的清理和构建?我问的原因是,当某处有一个挥之不去的 dll 时,我往往会陷入“地狱,它在我的机器上工作”的特定坑。
  • 在问了这个问题后,我只是这么想,我已经指示 TeamCity 彻底擦除项目的缓存文件夹,并在每次构建时重新克隆。同时——此时我还没有执行另一个构建——我注意到服务器运行的是 VS Professional 而不是 VS Ultimate。所以我换了VS,重新运行了构建,你知道什么。它建成了!

标签: c# .net visual-studio-2013 continuous-integration teamcity


【解决方案1】:

问完这个问题后,我继续调查。虽然我的持续集成服务器正在运行多个 Windows 虚拟机,并且由于 TeamCity 对这些虚拟机之间的构建进行负载平衡,但它们的一些配置与其他配置不同步。一些团队代码纯粹使用 C++,因此安装的 Microsoft Visual Studio 版本(Visual Studio Professional 2013)对于我的 C# 项目来说是不正确的版本。尝试在所选 VM 上使用 Visual Studio 打开项目后,我发现 Visual Studio 不理解 csproj 文件扩展名。

我安装了 Visual Studio 2013 Ultimate - 这是我在我的工作站上使用的版本 - 谢天谢地,它符合要求。有时在我的项目中,当我请求构建时,它会使用旧文件,因为 TeamCity 会在本地缓存文件。我发现在 VCS 选项中设置为“清理并重新下载”也解决了这个问题。

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多