首页 > 解决方案 > .NET 如何做出构建时决策

问题描述

首先给出一些上下文:我想构建一个 API(ASP.NET 核心),在这个 API 中我想实现 2 种身份验证方式。一种非常简单的方法,就是在应用程序本身中构建,这样它就可以只包含在一个容器中。使用身份服务器进行第二次身份验证,我将在单独的容器中运行。

我可以在 Startup.cs 中放置一个 if 语句来检查环境变量。但这意味着两种方案的所有代码都已编译。即使艰难,这也不会是世界末日。我想正确地做到这一点,并且想知道如何做到这一点。

提前感谢我能得到的任何帮助。

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

解决方案


使用预处理器指令。它看起来像这样

#ifdef USE_INTERAL_IDENTITY_SERVER
   // Setup internal identity-server
#else
   // Setup for external identity provider
#endif

然后,您可以在您的 csproj 文件中创建四个配置 - 两个用于调试,两个用于发布。您在这样的配置中定义预处理器常量(或不定义)

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_IternalIP|AnyCPU' ">
    <DefineConstants>USE_INTERAL_IDENTITY_SERVER</DefineConstants>
...
  </PropertyGroup>

推荐阅读