如何解决根据 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 举报,一经查实,本站将立刻删除。