Nuget更新构建

问题描述 投票:0回答:1

我很难让我的项目在重建时更新我们的内部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存储库,所以如果它很简单,我也不会感到惊讶。

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

configuration visual-studio-2017 nuget
1个回答
1
投票

我想我需要知道的是,在构建项目时是否可以让项目更新所有相关的nuget包?

如果您使用的是package.config,则可以非常轻松地更新其所有相关的nuget包。我们只需要添加一个预构建事件来更新它:

<YourNuGetCLIPath>\nuget.exe update "YourSolutionFile.sln or PackageId"

查看update command (NuGet CLI)了解更多详情。

如果你使用PackageReference,它会变得有点复杂。那是因为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 <Project Sdk="Microsoft.NET.Sdk">,还有另一种解决方法是使用PackageReference更新其所有依赖的nuget包,您可以使用dotnet add在预构建事件中更改PackageReference的版本:

dotnet add "$(ProjectPath)" package PackageID

如果您使用的是non-SDK + PackageReference,我还没有找到任何有效的解决方法。

所以,如果使用package.config没有限制,我认为package.config最适合你。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.