微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据 buildConfiguration 选择不同的 nuget 包

如何解决根据 buildConfiguration 选择不同的 nuget 包

我有一个内部框架,我构建了两个不同版本,用于外部系统的不同版本。

我构建了这个并将它们作为“Framework-Ver1”和“Framework-Ver2”发布到 NuGet 提要。

在我使用此框架的应用程序中,我已将其添加到 csproj。

  <Choose>
    <When Condition="'$(Configuration)' == 'Release_Ver2' Or '$(Configuration)' == 'Debug'">
      <ItemGroup>
        <packagereference Include="Framework.Ver2" />
      </ItemGroup>
    </When>
    <When Condition="'$(Configuration)' == 'Release_Ver1'">
      <ItemGroup>
        <packagereference Include="Framework.Ver1" />
      </ItemGroup>
    </When>
  </Choose>

这在 Visual Studio 中运行良好。

在 Azure Devops 上,虽然我总是得到 Framework.Ver2。

当我检查它时,DevOps yaml 看起来像这样

  solution: '**/*.sln'
  buildplatform: 'Any cpu'
  buildConfiguration: 'Release_Ver1'

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '$(solution)'
    configuration: '$(buildConfiguration)'
    FeedsToUse: 'select'
    vstsFeed: 'GUID'

但是,根据文档,restore 命令不使用配置。

如果我更改 csproj 中的“认值”,它会更改它使用的内容,但适用于两个管道。这确认没有 buildConfiguration 被发送到获取过程中。

 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

改为

 <Configuration Condition=" '$(Configuration)' == '' ">Release_Ver1</Configuration>

编辑:最后一块给了我一个想法,使用认的环境变量...... ^^

解决方法

更改 csproj 中的默认设置解决了问题。

在 csproj 的开头我添加了:

<Configuration Condition=" '$(Configuration)' == '' ">$(buildConfiguration)</Configuration>

由于 yaml 有:

buildConfiguration: 'Release_Ver1'

在 NuGet 还原期间使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。