【问题标题】:Nuget package restore with local feed使用本地提要恢复 Nuget 包
【发布时间】:2013-01-19 00:27:03
【问题描述】:

我正在尝试让 nuget 包恢复工作在一个解决方案中,该解决方案正在常规、公共 nuget 提要和位于共享网络驱动器上的本地提要中寻找包。

到目前为止,我尝试的是在解决方案上启用 nuget 包还原,然后编辑 Nuget.targets 并更改 PackageSources 变量,但这似乎不起作用。这可能吗?

对于包源部分,我的 Nuget.targets 文件如下所示:

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
    <!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
    <PackageSource Include="https://nuget.org/api/v2/" />
    <PackageSource Include="\\mynetworkshare\Development\NugetPackages" />
</ItemGroup>

我在构建时遇到的错误是“无法找到包 'MyCustomPackage' 的版本 '1.0.0'。我已验证 nupkg 存在于 \\mynetworkshare\Development\NugetPackages\MyCustomPackage.1.0.0.nupkg

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    对我来说,解决方法是 bhuvak 的回答加上我不得不重命名一些包。

    我一直在创建符号包(命名类似于 MyCustomPackage.1.0.0.symbols.nupkg)并使用本地包源文件夹中的符号包。但是,包还原似乎并没有解决这些问题。我不得不重命名它们,删除文件名的.symbols 部分。

    在我这样做之后,包还原效果很好。

    【讨论】:

    • 谢谢伙计,我花了两天时间才找到您的解决方案,最后它救了我。不知道为什么当我搜索 nuget restore 问题时此页面没有出现在顶部。再次感谢
    【解决方案2】:

    更新 NuGet.targets 中的源应该可以工作。 确保在目标文件中明确添加了官方 NuGet 源和本地源。 您注意到什么错误?

    【讨论】:

    • 查看我更新的问题。我得到的错误是在构建时找不到我的网络共享中存在的包
    【解决方案3】:

    我们遇到了与@evan 类似的问题。我们正在使用CreateNewNuGetPackageFromProjectAfterEachBuild 包在 TFS 2013 构建服务器上创建我们的 NuGet 包。我们有一个基于共享的本地包源,并将 nupkg 文件从构建输出复制到此共享。我们发现引用这些包的构建失败,因为 NuGet 包还原无法在本地源中找到包。

    在构建服务器上从命令行运行 NuGet,我们会得到奇怪的行为:

    nuget.exe list <search-term-for-our-packages> -allversions
    

    总是成功并列出我们软件包的每个版本。但是,当我们转到失败构建的 \src 文件夹并运行时

    nuget.exe restore .\oursolution.sln
    

    我们总是得到:

    Unable to find version '1.0.6.341' of package 'our.package.name'.
    

    我尝试了各种方法来解决这个问题,使用 nuget.config 并在 nuget.exe 版本之间进行交换,但修复只是与我们的 nupkg 文件的命名有关。默认情况下,CreateNewNuGetPackageFromProjectAfterEachBuild 将它生成的 nupkg 命名为包 ID 加上构建配置和目标。例如

    our.package.name.1.0.6.341.Release.AnyCPU.nupkg
    

    在我们的包源中使用此文件nuget list 有效,但nuget restore 失败。当我将包重命名为

    our.package.name.1.0.6.341.nupkg
    

    然后nuget listnuget restore 按预期工作。

    我们的修复只是修改CreateNewNuGetPackageFromProjectAfterEachBuild 的配置文件,以防止它包含构建配置和目标。但是为什么nuget restore 依赖包文件名而nuget list 不依赖呢?

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多