我正在尝试让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 回答
对我来说,修复是bhuvak的答案加上我不得不重命名一些包 .
我一直在创建符号包(命名类似于
MyCustomPackage.1.0.0.symbols.nupkg
)并使用我本地包feed文件夹中的那些包 . 但是,软件包还原似乎并没有提起来 . 我不得不重命名它们,删除文件名的.symbols
部分 .在我这样做之后,包恢复工作得很好 .
更新NuGet.targets中的源应该可以工作 . 确保已在目标文件中明确添加了官方NuGet源和本地源 . 你注意到什么错误?
我们和@evan有类似的问题 . 我们正在使用CreateNewNuGetPackageFromProjectAfterEachBuild包在TFS 2013构建服务器上创建我们的NuGet包 . 我们有一个基于本地的共享包源,并将构建输出中的nupkg文件复制到此共享 . 我们发现引用这些包的构建失败,因为NuGet包还原无法在本地源中找到包 .
从构建服务器上的命令行运行NuGet我们得到奇怪的行为:
总是成功并列出我们的每个版本的包 . 但是,当我们转到失败的构建的
\src
文件夹并运行时我们总是得到:
我尝试了各种各样的东西来解决这个问题,使用nuget.config和nuget.exe版本之间的交换,但修复只是与我们的nupkg文件的命名有关 . 默认情况下
CreateNewNuGetPackageFromProjectAfterEachBuild
将它生成的nupkg命名为包ID加上构建配置和目标 . 例如 .在我们的包源中使用此文件
nuget list
有效,但nuget restore
失败 . 当我重命名包时然后
nuget list
和nuget restore
按预期工作 .我们的修复只是修改
CreateNewNuGetPackageFromProjectAfterEachBuild
的配置文件,以防止它包括构建配置和目标 . 但是为什么nuget restore
依赖于包文件名而nuget list
不依赖?