Ole*_*ers 5 c# teamcity build nuget
我尝试使用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?)
Run Code Online (Sandbox Code Playgroud)
我认为 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而不是"格式化" - 名称空间
这只是我的猜测,出了什么问题.有任何线索如何解决这个问题?
我的包 - 配置:
<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>
Run Code Online (Sandbox Code Playgroud)
有两种方法可以进行包恢复。旧的方法涉及在解决方案旁边放置一个 .nuget 文件夹,其中包含 nuget.exe 和 nuget.targets,并在 .sln 文件旁边放置一个 nuget.config 文件。通常可以通过右键单击解决方案文件并点击“启用包还原”来启用此功能。
较新的方法不涉及修改构建过程,而是 Visual Studio 负责包恢复。您不需要启用它。我认为除非您使用旧方法,否则默认情况下它是打开的。当您在 VS 中构建时,这种新方法非常有用,但是当使用 TeamCity 时,您需要修改构建过程。
检查您使用的方法(较新的方法不会在 {solution root}/.nuget 中添加 nuget.exe)。如果您使用的是较新的版本,则需要在构建过程中添加一个单独的命令行步骤来调用它。它将使用构建成功所需的所有内容填充包文件夹。如果您没有手动更改引用,这些引用上的提示路径应指向适当的位置(如果这样做,您可以从包管理器控制台运行 Update-Package PackageName -Reinstall -ProjectName WhicheverProjectYouModified)。
c:\somewhere\nuget.exe restore c:\somewhere\yoursolution.sln
Run Code Online (Sandbox Code Playgroud)
这将要求您将最新版本的 nuget.exe 放置在构建服务器上的某个位置。如果您已经在某处安装了 nuget,请运行此命令将其升级到最新版本:
nuget update -self
Run Code Online (Sandbox Code Playgroud)
如果您使用旧方法但 TC 仍然存在问题,我建议您更新到新方法(请参阅下面的第二个链接)。
请参阅此处了解更多信息: