我终于在我的构建服务器上安装了VS2015,以避免单独安装必要组件的麻烦,但现在我在构建时遇到了一个新错误。
在我的解决方案上运行MSBuild会产生以下错误:
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Api.sln" (default target) (1) ->
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Api\Imp.Cook.Api.csproj" (default target) (2) ->
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Models\Imp.Cook.Models.csproj" (default target) (3) ->
(ResolveNuGetPackageAssets target) ->
C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets(89,5):
error : The package Microsoft.CSharp with version 4.0.0 could not be found in
C:\Users\Bamboo\.nuget\packages.
Run a NuGet package restore to download the package.
现在,我可以在Bamboo用户目录中手动创建一个.nuget文件夹,这有帮助(它在下一个包Microsoft.NETCore.Portable.Compatibility
上仍然失败)。
但是我在这里错过了什么谜题?我在运行msbuild之前运行nuget restore
,它获取我在项目中直接使用的包。
Imp.Cook.Models
是一个面向Windows 10 Universal应用程序和.NET 4.6的可移植类库。
构建服务器正在运行Windows Server 2012。
我和你一样或多或少都有同样的问题所以我可以分享我对如何使用它的见解。首先,我们将Bamboo作为服务运行(4个代理商)。重要的是要注意,服务需要以用户身份登录,而不是系统帐户才能恢复包(我还不知道原因)。鉴于你有一个用户地图被指示为包的来源我会假设该部分是好的。
接下来,您需要一个正确配置的nuget.config文件,您将与NuGet.exe一起使用。我看起来像这样。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
<activePackageSource>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</activePackageSource>
</configuration>
然后你需要使用NuGet.exe运行restore命令(我建议你从NuGet获得最新的Commandline版本)
我在Bamboo步骤中使用以下命令来恢复包:
NuGet.exe restore "Path_To_Solution" -ConfigFile "path_To_ConfigFile" -NoCache
之后,您应该看到正在下载到C:\ Users \ Bamboo \ .nuget \ packages文件夹的软件包。当您尝试使用MsBuild在下一步中构建解决方案时,它应该可以工作。
要安装Microsoft.CSharp,请在程序包管理器控制台中运行以下命令。
然后输入:
Install-Package Microsoft.CSharp -Version 4.0.0
https://www.nuget.org/packages/Microsoft.CSharp/4.0.0
我还收到了“C:\ Users \ username.nuget \ packages”表单的错误消息。我能够通过首先删除Users \ username.nuget文件夹和解决方案的packages文件夹中的所有文件夹,然后恢复nuget包来解决它。