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

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

MSBuild.exe /t:Restore MySolution.sln /p:RestoreConfigFile=NuGet.config
csproj文件之一包含:
<PackageReference Include="MyPackageA">
    <Version>1.2.*</Version>
</PackageReference>
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包含预发行软件包?

    最佳答案

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

    您可以使用

    <PackageReference Include="mypk" Version="1.0.*" />
    

    或者
    <PackageReference Include="mypk" Version="1.0.1-*" />
    

    但不是1.0.*-*

    请参阅this GitHub issue,其中跟踪了此功能请求。

    关于msbuild - 如何在MSBuild还原目标中包含预发行包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49917703/

    10-13 08:42