通过 Azure DevOps 管道构建的解决方案有一些使用条件包引用的项目,例如:
<Choose>
<When Condition="'$(Configuration)'=='Debug'">
<ItemGroup>
<PackageReference Include="Mock.MyPackage" Version="1.0.0" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="MyPackage" Version="1.2.0" />
</ItemGroup>
</Otherwise>
</Choose>
包源是私有 NuGet 源。
dotnet 恢复任务不考虑条件包选择。 (它恢复 Mock.MyPackage)
问题:
如何有条件地恢复包(基于 $Configuration)?
Remarks:
我还尝试通过指定 MsBuild 参数在 Visual Studio 生成任务期间进行恢复:/t:restore。
在这种情况下,它会失败并显示一条消息:无法从远程源检索有关 XX 的信息。如果此命令可以恢复包,我如何为私人提要指定授权参数?
Github上有一个问题:https://github.com/NuGet/Home/issues/5895最后提到了这样的问题。
Azure DevOps - 有条件的包恢复
这个问题应该与您的具体要求和当前的限制有关Visual Studio Build task
/dotnet restore
.
正如您测试的那样,如果我们使用restore task
,我们无法为此任务指定配置参数。因为没有这样的选项来接收恢复任务的配置参数。这就是为什么它总是恢复默认包的原因Mock.MyPackage
.
如果您使用Visual Studio build task,
我们无法为私人提要指定授权参数。
为了解决此问题,我使用命令行 V1 任务来调用 MSBuild,以使用以下 MSBuild 参数来恢复和生成项目:
-t:restore;build "CoreConditionRestore/CoreConditionRestore/CoreConditionRestore.csproj" -p:RestoreSources="<MyFeed>/v3/index.json" -p:RestoreConfigFile="<MyNugetConfigPath>\nuget.config" /p:Configuration=Debug
注意:我们可以将私人提要的授权参数保存在nuget.config
file.
作为测试,它在我这边与 DevOps 配合得很好。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)