gpt4 book ai didi

msbuild - Azure DevOps - 有条件的包还原

转载 作者:行者123 更新时间:2023-12-04 04:24:30 25 4
gpt4 key购买 nike

通过 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>

包源是私有(private) NuGet 源。

dotnet restore 任务不遵守条件包选择。 (它恢复 Mock.MyPackage)
问题:
如何有条件地恢复包(基于 $Configuration)?

评论:
我还尝试通过指定 MsBuild 参数在 Visual Studio Build 任务期间进行恢复:/t:restore。
在这种情况下,它会失败并显示一条消息:无法从远程源检索有关 XX 的信息。如果此命令可以恢复包,我如何为私有(private)提要指定授权参数?

Github上有一个问题: https://github.com/NuGet/Home/issues/5895最后提到这样的问题。

最佳答案

Azure DevOps - conditional package restoration



此问题应该与您指定的要求和当前 Visual Studio Build task 的限制有关。/ dotnet restore .

正如您测试的那样,如果我们使用 restore task ,我们无法为此任务指定配置参数。由于没有这样的选项来接收恢复任务的配置参数。这就是为什么它总是恢复默认包 Mock.MyPackage的原因。 .

如果您使用 Visual Studio build task,我们无法为私有(private)提要指定授权参数。

为解决此问题,我使用命令行 V1 任务调用 MSBuild 以使用以下 MSBuild 参数恢复和构建项目:
-t:restore;build "CoreConditionRestore/CoreConditionRestore/CoreConditionRestore.csproj" -p:RestoreSources="<MyFeed>/v3/index.json" -p:RestoreConfigFile="<MyNugetConfigPath>\nuget.config" /p:Configuration=Debug

enter image description here

注意:我们可以将私有(private)提要的授权参数保存在 nuget.config 中。文件。

作为测试,它在我这边与 Devops 一起工作得很好。

希望这可以帮助。

关于msbuild - Azure DevOps - 有条件的包还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58109878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com