我很难让我的项目在重建时更新我们的内部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存储库还很陌生,因此如果它很简单,我就不会感到惊讶。
任何帮助将不胜感激。谢谢。
答案 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
最适合您。
希望这会有所帮助。