我有一个内部框架,我为外部系统的不同版本构建了两个不同的版本。
我构建了它并将它们作为“框架-版本1”和“框架-版本2”发布到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中的"default“,那么除了两条管道之外,它使用的内容也会发生变化。这确认没有buildConfiguration被发送到fetch进程。
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>被更改为
<Configuration Condition=" '$(Configuration)' == '' ">Release_Ver1</Configuration>编辑:这最后一篇文章给了我一个想法,使用环境变量作为默认变量……^^
发布于 2021-03-05 16:55:03
改变csproj中默认值的设置方式解决了这个问题。
在csproj的开头,我添加了:
<Configuration Condition=" '$(Configuration)' == '' ">$(buildConfiguration)</Configuration>因为yaml有:
buildConfiguration: 'Release_Ver1'在NuGet恢复过程中使用的。
https://stackoverflow.com/questions/66478745
复制相似问题