2

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

4

3 回答 3

3

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

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

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

于 2013-02-10T17:31:11.943 回答
2

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

于 2013-02-02T19:14:41.870 回答
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呢?

于 2017-01-13T10:20:44.567 回答