visual-studio - 根据 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 发送到 fetch 过程中。
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
改为
<Configuration Condition=" '$(Configuration)' == '' ">Release_Ver1</Configuration>
编辑:这最后一块给了我一个想法,使用默认环境变量...... ^^
解决方案
更改 csproj 中的默认设置方式解决了该问题。
在 csproj 的开头,我添加了:
<Configuration Condition=" '$(Configuration)' == '' ">$(buildConfiguration)</Configuration>
而且由于 yaml 有:
buildConfiguration: 'Release_Ver1'
在 NuGet 还原期间使用它。
推荐阅读
- python - 如何清理(重置)我的装饰器的缓存?
- firebase - 查找与 Firebase 关联的开发者电子邮件帐户
- sql - 如何在 SQL 中获得确切的年份差异
- javascript - 如果选择了一个单选条件,则 HTML 表单然后强制输入
- javascript - Javascript 测试 - 使用特定参数调用的函数
- node.js - 当自定义 bash 脚本回显某些内容时,不会为 child_process spawn 触发数据事件
- windows - 将文件夹名称添加到数组中的路径
- spring-boot - 有没有办法在 Websphere 中传递特定于应用程序的属性?
- google-apps-script - 在 Google App 脚本中转换 Unix 时间戳
- javascript - 无法在操作/api 服务中访问 redux 存储(没有 connect() 函数)