首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于buildConfiguration选择不同的nuget包

基于buildConfiguration选择不同的nuget包
EN

Stack Overflow用户
提问于 2021-03-05 00:05:21
回答 1查看 88关注 0票数 1

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

我构建了它并将它们作为“框架-版本1”和“框架-版本2”发布到NuGet提要。

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

代码语言:javascript
复制
  <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看起来像这样

代码语言:javascript
复制
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release_Ver1'

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

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

如果我更改了csproj中的"default“,那么除了两条管道之外,它使用的内容也会发生变化。这确认没有buildConfiguration被发送到fetch进程。

代码语言:javascript
复制
 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

被更改为

代码语言:javascript
复制
 <Configuration Condition=" '$(Configuration)' == '' ">Release_Ver1</Configuration>

编辑:这最后一篇文章给了我一个想法,使用环境变量作为默认变量……^^

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-05 16:55:03

改变csproj中默认值的设置方式解决了这个问题。

在csproj的开头,我添加了:

代码语言:javascript
复制
<Configuration Condition=" '$(Configuration)' == '' ">$(buildConfiguration)</Configuration>

因为yaml有:

代码语言:javascript
复制
buildConfiguration: 'Release_Ver1'

在NuGet恢复过程中使用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66478745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档