【问题标题】:NuGet missing .nuget folder i c:\Users\MyUserNameNuGet 缺少 .nuget 文件夹我 c:\Users\MyUserName
【发布时间】:2015-10-15 19:49:59
【问题描述】:

我终于在我的构建服务器上安装了 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 通用应用和 .NET 4.6 的可移植类库。

构建服务器正在运行 Windows Server 2012。

【问题讨论】:

    标签: msbuild nuget portable-class-library nuget-package-restore


    【解决方案1】:

    我和你有或多或少相同的问题,所以我可以分享我如何让它发挥作用的见解。首先,我们将 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 运行恢复命令(我建议你从NuGet获取最新的命令行版本

    我在 Bamboo 步骤中使用以下命令来恢复包:

    NuGet.exe restore "Path_To_Solution" -ConfigFile "path_To_ConfigFile" -NoCache
    

    之后,您应该会看到包被下载到 C:\Users\Bamboo\.nuget\packages 文件夹。当您尝试在下一步中使用 MsBuild 构建解决方案时,它应该可以工作。

    【讨论】:

    • 感谢您这么晚才回答这个问题。我还是时不时出现这个问题,所以我一定会试一试!
    • 在最新的 Visual Studio 中开发 Xamarin 应用程序时,我刚刚经历了整个过程。我读到关于是否应该使用配置文件的矛盾的东西。在 Microsoft 的文档和 nuget.org 上包含相互矛盾的信息!更糟糕的是,我还必须添加第三方 nuget repos 和添加 nuget.org 下载,这些下载不知何故不会出现在 Visual Studio 包管理器中。 什么现在是官方认可的方法?
    • 使用 nuget.exe 正确还原包的唯一方法是添加配置文件。否则,NuGet 将从它知道的位置获取配置文件,例如$ENV:APPDATA\NuGet\NuGet.Config 在 PowerShell 中。这个比较标准,不包含所有的来源,你可以自己看一下。因此,为了确保 NuGet 可以找到我们需要的一切,我们添加了自己的配置文件。没有真正的“官方”方法,MS 主要假设您将使用他们的平台进行构建。
    【解决方案2】:

    要安装 Microsoft.CSharp,请在包管理器控制台中运行以下命令。

    然后输入: Install-Package Microsoft.CSharp -Version 4.0.0 https://www.nuget.org/packages/Microsoft.CSharp/4.0.0

    【讨论】:

    • 您能解释一下这实际上是如何解决问题的吗?
    【解决方案3】:

    我还收到了“C:\Users\username.nuget\packages”表单的错误消息。我能够通过首先删除 Users\username.nuget 文件夹以及解决方案的包文件夹中的所有文件夹,然后恢复 nuget 包来解决它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2021-09-08
      相关资源
      最近更新 更多