Nuget更新

时间:2018-09-10 01:45:44

标签: configuration visual-studio-2017 nuget

我很难让我的项目在重建时更新我们的内部nuget程序包。每次构建依赖于它的项目时,我们都需要几个核心参考库。

我正在使用Visual Studio 2017和nuget 4.7.1

我已经将有问题的项目转换为使用包引用方法而不是package.config,但是它在项目文件中生成的详细信息与教程中所说的不同。

这是我在项目文件中得到的:

<PackageReference Include="SMSCore">
  <Version>10.5.0</Version>
</PackageReference>
<PackageReference Include="STMICore">
  <Version>10.5.0</Version>
</PackageReference>

虽然nuget文档说了这一点:

<!-- Accepts any 6.x.y version. -->
<PackageReference Include="ExamplePackage" Version="6.*" />
<PackageReference Include="ExamplePackage" Version="[6,7)" />

https://docs.microsoft.com/en-us/nuget/reference/package-versioning

我尝试将项目文件更改为类似于参考资料。
我已经尝试过以项目文件开始的格式使用版本控制方法。

似乎什么都没用。
也许我看错了文档?
我对定义和使用nuget存储库还很陌生,因此如果它很简单,我就不会感到惊讶。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

  

我想我需要知道的是,在构建项目时是否有可能让项目更新其所有依赖的nuget包?

如果您使用的是devMiddleware.fileSystem,将很容易更新其所有依赖的nuget软件包。我们只需要添加一个预构建事件即可对其进行更新:

package.config

检查update command (NuGet CLI)了解更多详细信息。

如果您使用的是<YourNuGetCLIPath>\nuget.exe update "YourSolutionFile.sln or PackageId" ,它将变得更加复杂。那是因为NuGet.exe update does not support PackageReference。在这种情况下,我们必须使用浮动版本来自动更新软件包(您在问题中提到),但是它不适用于其所有相关的nuget软件包,因此浮动版本似乎也不适合您。此外,如果您使用的是PackageReference,则NuGet软件包管理UI上还会出现另一个问题:

NuGet Build Integrated Project handling of floating versions and ranges in Visual Studio Client

此外,如果您的项目类型为SDK PackageReference,则可以使用另一种解决方法,以<Project Sdk="Microsoft.NET.Sdk">更新其所有依赖的nuget程序包,您可以使用PackageReference来更改{ {1}}在预构建事件中:

dotnet add

如果您使用的是PackageReference + dotnet add "$(ProjectPath)" package PackageID ,我还没有找到任何有效的解决方法。

因此,如果没有使用non-SDK的限制,我认为PackageReference最适合您。

希望这会有所帮助。