首页 文章

使用本地Feed修复包恢复

提问于
浏览
1

我正在尝试让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 .

3 回答

  • 2

    对我来说,修复是bhuvak的答案加上我不得不重命名一些包 .

    我一直在创建符号包(命名类似于 MyCustomPackage.1.0.0.symbols.nupkg )并使用我本地包feed文件夹中的那些包 . 但是,软件包还原似乎并没有提起来 . 我不得不重命名它们,删除文件名的 .symbols 部分 .

    在我这样做之后,包恢复工作得很好 .

  • 3

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

  • 1

    我们和@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 不依赖?

相关问题