【问题标题】:How to use dotnet pack with AppVeyor?如何将 dotnet pack 与 AppVeyor 一起使用?
【发布时间】:2017-06-24 20:04:34
【问题描述】:

我正在自动化我的 .NET Standard 项目(VS 2017 的新 csproj 格式)以在构建后生成 nuget 包。

问题是我希望解决方案中的所有项目都遵循我的 AppVeyor 构建版本,而不是在 csprojs 的 Package 属性中设置的版本(默认为 1.0.0)。

要考虑的另一件事是我的项目之间有引用,并且也应该保留 AppVeyor 构建版本。

有简单的方法吗?怎么样?

【问题讨论】:

    标签: .net nuget pack appveyor


    【解决方案1】:

    您可以将版本作为 MSBuild 属性传递给dotnet pack

    dotnet pack MyProject.csproj --configuration Release /p:Version="1.2.3"
    

    (这也适用于dotnet build

    这是FakeItEasy build script 中的一个示例。

    要获取 AppVeyor 内部版本号,请使用 APPVEYOR_BUILD_VERSION environment variable

    要考虑的另一件事是我的项目之间有引用,并且也应该保留 AppVeyor 构建版本。

    这应该不是问题,因为您没有在 <ProjectReference> 元素中指定版本。

    【讨论】:

      【解决方案2】:

      更新: .NET Core .csproj files patchingautomatic nuget packaging for .NET Core projects 现在可以使用了。


      有几个选项:

      使用 PowerShell 手动修补 .NET Standard .csproj 文件。在此示例中,我们更新了版本,但您也可以通过这种方式更新其他设置。

      $xmlPath = "$env:appveyor_build_folder\MyProject\MyProject.csproj"
      $xml = [xml](get-content $xmlPath)
      $propertyGroup = $xml.Project.PropertyGroup | Where { $_.Version}
      $propertyGroup.Version = $env:appveyor_build_version
      $xml.Save($xmlPath)
      msbuild %appveyor_build_folder%\MyProject\MyProject.csproj /t:pack 
      

      或者如果你想继续使用.nuspec文件,你可以用这样的命令打包:

      msbuild %appveyor_build_folder%\MyProject\MyProject.csproj /t:pack /p:Configuration=%CONFIGURATION%;NuspecFile=MyProject\MyProject.nuspec;PackageVersion=%APPVEYOR_BUILD_VERSION%
      

      当然您可以使用dotnet pack,但我们认为今后msbuild 仍将是主要工具,因此我们尝试使用它来编写所有脚本。

      不用说,我们在 AppVeyor 中应该不需要这个脚本,我们在 https://github.com/appveyor/ci/issues/1404 中跟踪它。

      【讨论】:

      • 我认为 csproj 不应该有 Version 属性。根据this,应该是PackageVersion
      • 根据this,对于PackageVersion默认为$(Version)的值,即项目中的属性Version。所以据我了解Version 仍然有效,但PackageVersion 更具体到 Nuget 包装。 补充:我认为对于 AppVeyor 中的自动修补,我们应该提出两个选项来修补并实际修补.csproj中真正存在的内容@
      • 这适用于*.csproj 文件,但它不适用于*.fsproj 文件吗?我可以获得对两者都适用的程序集信息修补程序,但 dotnet pack 似乎只适用于 *.csproj 文件。
      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多