c# - .NET 如何做出构建时决策
问题描述
首先给出一些上下文:我想构建一个 API(ASP.NET 核心),在这个 API 中我想实现 2 种身份验证方式。一种非常简单的方法,就是在应用程序本身中构建,这样它就可以只包含在一个容器中。使用身份服务器进行第二次身份验证,我将在单独的容器中运行。
我可以在 Startup.cs 中放置一个 if 语句来检查环境变量。但这意味着两种方案的所有代码都已编译。即使艰难,这也不会是世界末日。我想正确地做到这一点,并且想知道如何做到这一点。
提前感谢我能得到的任何帮助。
解决方案
使用预处理器指令。它看起来像这样
#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>
推荐阅读
- css - 如何修复我的表格的标题,使它们不会滚动
- dll - 有没有办法修复“访问冲突 - 代码 c0000005(!!!第二次机会!!!)”错误
- vue.js - vue温泉ui使用组件事件
- python - 在 PyCharm Pro 中从 Google App Engine SDK 导入时出现问题
- python - 如何使用 NumPy 生成相邻的索引
- javascript - jQuery在keydown事件后触发mousedown touchstart事件
- scheme - 比较两个列表在方案中是否相同
- javascript - 使用三元和箭头函数解决一个 freeCodeCamp 练习
- java - 如何排列多个文本视图
- android - 在 Android 项目中使用 LibGDX 作为片段:如何从 android 部分调用 libgdx 方法?