首页 文章

使用TeamCity构建解决方案的问题(可能的nuget-issue)

提问于
浏览
5

我尝试使用TeamCity构建解决方案 . 为了减少我们的存储库大小,不要将DLL包含到存储库中,而是在构建解决方案时使用NuGet接收任何包的当前实际版本 . 我们可以在本地计算机上构建解决方案,但在TeamCity-Buildserver上收到错误:

The type or namespace name 'Formatting' does not exist in the namespace 'System.Net.Http' (are you missing an assembly reference?)

我认为nuget-packages存在问题 . System.Net.Http.Formatting应该在Teamcity下载的NuGet-Package Microsoft.AspNet.WebApi.Client 5.0.0中 . 但似乎构建命令(Microsoft Visual Studio解决方案运行程序)查看Microsoft.Net.Http 2.2.xx而不是"formatting" -namespace

这只是我的猜测,出了什么问题 . 有任何线索如何解决这个问题?

我的包 - 配置:

<packages>
  <package id="log4net" version="2.0.3" targetFramework="net45" />
  <package id="Microsoft.Bcl.Build" version="1.0.10" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0" targetFramework="net45" />
  <package id="System.Net.Http.Formatting" version="4.0.20505.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" />
</packages>

1 回答

  • 3

    有两种方法可以进行包恢复 . 较旧的方法是将.nuget文件夹与您的解决方案一起使用nuget.exe和nuget.targets,并在您的.sln文件旁边放置一个nuget.config文件 . 通常通过右键单击解决方案文件并点击“启用包恢复”来启用此功能 .

    较新的方法不涉及修改构建过程,而是Visual Studio负责包恢复 . 您不需要启用它 . 我认为除非您使用旧方法,否则它默认开启 . 当您在VS中构建时,这种新方法很棒,但在使用TeamCity时,您需要修改构建过程 .

    检查您使用的方法(较新的方法不会在 / . nuget中添加nuget.exe) . 如果您使用的是新版本,则需要在构建过程中添加单独的命令行步骤来调用它 . 它将使用构建成功所需的所有内容填充packages文件夹 . 如果您没有手动更改引用,那么这些引用上的提示路径应指向适当的位置(如果这样做,您可以从包管理器控制台运行Update-Package PackageName -Reinstall -ProjectName WhicheverProjectYouModified) .

    c:\somewhere\nuget.exe restore c:\somewhere\yoursolution.sln
    

    这将要求您在构建服务器上的某个位置放置最新版本的nuget.exe . 如果你已经在某处有nuget,请运行它以使其达到最新版本:

    nuget update -self
    

    如果您使用旧方法并且仍然遇到TC问题,我建议您更新到新方法(请参阅下面的第二个链接) .

    有关详情,请参阅此处:

相关问题