【问题标题】:Change NuGet Package Referenced Based on Profile更改基于配置文件引用的 NuGet 包
【发布时间】:2020-05-20 20:32:06
【问题描述】:

我们有一个在本地创建的 NuGet 包。我们有一个包含非生产环境的版本和一个包含生产环境的版本。让我们使用 Connection 和 ConnectionProd 作为参考。

有没有一种方法可以设置 Debug 或我已设置为使用 Connection 包的非 Prod 发布配置文件,但让 Production 配置文件使用 ConnectionProd?我知道 PackageReference 有条件,但我不确定是否有办法将其与选定的发布配置文件联系起来?

出于安全原因,我们的大多数开发人员都无权访问 ConnectionProd NuGet 源位置,我希望不必创建另一个 TFS 分支来处理生产 NuGet 引用。

【问题讨论】:

    标签: asp.net-core nuget nuget-package


    【解决方案1】:

    您可以根据环境指定不同的包名称和版本:

    <ItemGroup Condition="'$(Configuration)'=='Debug'">
        <PackageReference Include="Connection" Version="1.0.0-dev" />
    </ItemGroup>
    
    <ItemGroup Condition="'$(Configuration)'=='Release'">
        <PackageReference Include="ConnectionProd" Version="1.0.0" />
    </ItemGroup>
    

    更新

    理论上'$(ASPNETCORE_ENVIRONMENT)'=='Development' 或使用任何环境变量作为条件应该可以做到,但不知何故我无法让它在我的测试项目中工作。

    但是,我找到了另一种让它与任何自定义变量一起运行的方法,只需在 &lt;PropertyGroup&gt; 中定义您的变量,然后使用它来定义条件:

    <PropertyGroup>
        <MyVariable Condition="'$(MyVariable)'==''">MyValue</MyVariable>
    </PropertyGroup>
    
    <ItemGroup Condition="'$(MyVariable)'=='MyValue'">
        ...
    </ItemGroup>
    

    参考:https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-build-the-same-source-files-with-different-options?view=vs-2019#example

    【讨论】:

    • 还有什么方法可以在所选配置文件上执行此操作吗?还是我只限于调试和发布并依赖于发布配置文件使用发布配置的事实?
    • 谢谢,已将其标记为已接受。但我建议在第一部分的 ItemGroup 部分中关闭你的括号,你忘了关闭它们。
    猜你喜欢
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多