C# 与TeamCity建立解决方案的问题(可能的nuget问题)
我尝试与TeamCity建立解决方案。为了减小存储库的大小,wie不将DLL包括在存储库中,而是在构建解决方案时使用NuGet接收任何包的当前实际版本。 我们可以在本地计算机上构建解决方案,但在TeamCity Buildserver上收到一个错误:C# 与TeamCity建立解决方案的问题(可能的nuget问题),c#,build,teamcity,nuget,C#,Build,Teamcity,Nuget,我尝试与TeamCity建立解决方案。为了减小存储库的大小,wie不将DLL包括在存储库中,而是在构建解决方案时使用NuGet接收任何包的当前实际版本。 我们可以在本地计算机上构建解决方案,但在TeamCity Buildserver上收到一个错误: The type or namespace name 'Formatting' does not exist in the namespace 'System.Net.Http' (are you missing an assembly refer
The type or namespace name 'Formatting' does not exist in the namespace 'System.Net.Http' (are you missing an assembly reference?)
我认为nuget软件包有问题。System.Net.Http.Formatting应位于Teamcity下载的NuGet软件包Microsoft.AspNet.WebApi.Client 5.0.0中。但是,build命令(Microsoft Visual Studio solution runner)似乎查看的是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>
有两种方法可以进行包还原。较旧的方法是在解决方案旁边有一个.nuget文件夹,其中有nuget.exe和nuget.targets,在.sln文件旁边有一个nuget.config文件。这通常通过右键单击解决方案文件并点击“启用包还原”来启用 较新的方法不涉及修改构建过程,而是由VisualStudio负责包恢复。您不需要启用它。我认为默认情况下它是打开的,除非您使用了旧的方法。在VS中构建时,这种新方法非常好,但在使用TeamCity时,需要修改构建过程 检查您使用的方法(较新的方法不会在{solution root}/.nuget中添加nuget.exe)。如果您使用的是较新的一个,您可能希望在构建过程中添加一个单独的命令行步骤来调用它。它将用构建成功所需的所有内容填充packages文件夹。如果您没有手动更改引用,那么这些引用上的提示路径应该指向适当的位置(如果您这样做了,您可以从Package manager控制台运行Update PackageName-Reinstall-ProjectName WhicheverProjectYouModified) 这将要求您将最新版本的nuget.exe放在生成服务器的某个位置。如果您已经在某个地方安装了nuget,请运行此命令以将其更新为最新版本:
nuget update -self
如果您使用的是旧方法,但TC仍然存在问题,我建议您更新到新方法(请参阅下面的第二个链接)
有关更多信息,请参见此处:
nuget update -self