如何在MSBuild还原目标中包含预发行包

Ale*_*éau 3 msbuild nuget nuget-package-restore visual-studio-2017

此问题特定于MSBuild 15.1+(Visual Studio 2017)PackageReference,这Nuget是完全集成在中的新方法MSBuild

在我的持续集成脚本中,我得到了类似的东西:

MSBuild.exe /t:Restore MySolution.sln /p:RestoreConfigFile=NuGet.config
Run Code Online (Sandbox Code Playgroud)

其中一个csproj文件包含:

<PackageReference Include="MyPackageA">
    <Version>1.2.*</Version>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)

MyPackageA 是一个内部软件包,我希望nuget将其引用为最新可用版本,包括预发行版本。

让我们举两个例子:

例子1

可用的软件包有:

  • MyPackageA版本1.2.7-dev1
  • MyPackageA版本1.2.7-dev2
  • MyPackageA版本1.2.7-dev3
  • MyPackageA版本1.2.8

我希望nuget解决依赖关系并选择MyPackageA版本1.2.8。

范例#2

可用的软件包有:

  • MyPackageA版本1.2.7-dev1
  • MyPackageA版本1.2.7-dev2
  • MyPackageA版本1.2.7-dev3
  • MyPackageA版本1.2.8
  • MyPackageA版本1.2.9-dev1
  • MyPackageA版本1.2.9-dev2

我希望nuget解决依赖关系并选择MyPackageA版本1.2.9-dev2。

但是,在两个示例中,它只能解析为1.2.8版(稳定版本)。

有没有办法告诉MSBuildNuget包含预发行软件包?

Mar*_*ich 5

目前,预发行版本不能与浮动版本一起使用。

您可以使用

<PackageReference Include="mypk" Version="1.0.*" />
Run Code Online (Sandbox Code Playgroud)

要么

<PackageReference Include="mypk" Version="1.0.1-*" />
Run Code Online (Sandbox Code Playgroud)

但是不是1.0.*-*

请参阅此GitHub问题,其中跟踪了此功能请求。