首页 > 解决方案 > 如何根据项目中包含的 dll 或包在 .net 中创建条件指令?

问题描述

我正在尝试为 asp.net 核心的Startup类创建可重用的扩展方法。

我想做的一件事是根据真/假输入添加所有不同的用途。

一个示例是ConfigureServices 方法中的services.AddHttpsRedirection 。

我的问题是这种方法需要添加 nuget 包Microsoft.AspNetCore.HttpsPolicy

我想做的是根据这个包/dll的存在添加一个预处理器指令。

根据我的研究,似乎我需要使用类似的东西:

#if HTTPS_POLICY
   services.AddHttpsRedirection(options =>
        {
            //difference options
        });
#endif

但我不知道我将在哪里设置HTTPS_POLICY符号。

我找到了 2 个可能的地方:

  1. 使用 .csproj 文件,我可以使用 Condition 属性设置DefineConstants元素。
  2. 我可以在 Visual Studio 中设置条件编译符号。

但我什至不确定这两件事是否不同,它们可能是相同的。

而对于选项 1,我不知道如何使用Condition属性来查找是否存在包引用或 dll。

还要考虑一下,我正在创建一个将被其他项目使用的类库,理想情况下,我不希望那些其他项目必须设置条件符号和东西。

这甚至有可能实现,如果可以,如何实现?

标签: c#asp.net.netasp.net-core.net-core

解决方案


推荐阅读