NuGet 缺少 .nuget 文件夹 i c:\Users\MyUserName

NuGet missing .nuget folder i c:\Users\MyUserName

我终于屈服并在我的构建服务器上安装了 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 上仍然失败)。

但是我在这里缺少哪一块拼图?我 运行 nuget restore 在 运行ning msbuild 之前,它获取了我在我的项目中直接使用的包。

Imp.Cook.Models 是一个可移植的 class 库,目标是 Windows 10 个通用应用程序和 .NET 4.6。

构建服务器是 运行ning Windows Server 2012.

我或多或少遇到了与您相同的问题,因此我可以分享我对如何让它发挥作用的见解。首先,我们有 Bamboo 运行ning 作为一项服务(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 运行 恢复命令(我建议您从 NuGet

获取最新的命令行版本

我在 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 文件夹和解决方案包文件夹中的所有文件夹,然后恢复 nuget 包来解决它。