根据buildConfiguration选择不同的nuget包



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

我构建了这个并将它们发布到NuGet feed中,命名为"Framework-Ver1"one_answers"Framework-Ver2".

在我使用这个框架的应用程序中,我已经将它添加到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'

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

如果我改变"default"在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 Restore中使用。

相关内容

  • 没有找到相关文章

最新更新