UWP项目中的条件包引用

3
我想仅在Debug配置中使用一个NuGet包。我发现了一种方法,在Visual Studio 2017中可以实现,前提是我有一个针对创作者更新(15063)的UWP项目。
<PackageReference Include="Newtonsoft.json" Version="9.0.1" Condition="'$(Configuration)' == 'Debug'" />

但是该软件包仍然适用于“发布”配置。

你尝试过使用 Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " 吗? - undefined
@NicoZhu-MSFT 没有区别 - undefined
@JakubKrampl 你是如何验证发布配置中的软件包仍然存在的? - undefined
@karann-MSFT 我仍然可以在引用中看到它,并且可以在代码中使用它。似乎唯一支持的条件是TargetFramework - undefined
3个回答

5
<Choose>  
    <When Condition=" '$(Configuration)'=='Debug' ">  
        <ItemGroup>
            <PackageReference Include="Newtonsoft.json" Version="9.0.1" />
        </ItemGroup>
    </When>
</Choose>
< p>PackageReference 必须在 ItemGroup 中才能工作。


我可以使用自己定义的变量来替代$Configuration吗?并且在构建时设置它(或者使用它..?) - undefined

1
你可以使用 Choose/When 作为解决方法:
<Choose>  
    <When Condition=" '$(Configuration)'=='Debug' ">  
        <PackageReference Include="Newtonsoft.json" Version="9.0.1" />
    </When>
</Choose>  

你确定它能正常工作吗?我在VS 2017 Pro中遇到了一个错误:“<When>元素下的<PackageReference>元素无法识别”。 - undefined

1

有没有计划在包条件中支持$(Configuration) - undefined
@kspearrin 帮我理解一下这个情景。为什么你想在调试时使用一个包,而在发布时使用另一个包呢? - undefined
我目前需要的情况是为同一个项目创建两个不同的构建。build1(发布版)使用了一个需要 NuGet 包的特定功能,而 specialbuild2 则不使用此功能,因此不需要 NuGet 包(实际上甚至不能在其输出中包含该 dll)。我已经为 specialbuild2 创建了一个 Configuration,它使用预处理器 #if specialbuild2 在构建 specialbuild2 时移除代码。在这个构建过程中,我还需要移除 NuGet 包的引用,以便这些 dll 不会出现在输出中。 - undefined
例如,如果您使用了一些NuGet包,这些包是用于测试自动化的,但您不希望将其保留在发布版本中。 - undefined
1
有人已经做过了,但是被关闭了,不会修复。https://github.com/NuGet/Home/issues/5895 - undefined
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接