gpt4 book ai didi

c# - .Net Core 中每个启动设置的预处理器指令

转载 作者:行者123 更新时间:2023-11-30 23:09:29 25 4
gpt4 key购买 nike

我有一个 .net core 1.1 网络应用程序,我正在与我的团队合作。在某些情况下,我们需要使用 IIS Express 调试应用程序,而在其他情况下,我们需要改用 WebListener。如果在 IIS Express 下运行,WebListner 命令会导致应用程序崩溃,因此当应用程序在 IIS Express 下运行时,我想使用预处理器指令禁用它。代码看起来像这样:

   #if !RUNNING_UNDER_IIS_EXPRESS
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif

任何人都可以告诉我如何设置它或建议一个更好的方法来完成整个事情吗?

最佳答案

你的问题的问题是预处理器指令是在编译时而不是运行时使用和评估的。因此,如果您想要一个“简单”的开关,您必须在 csproj 中将其定义为构建配置。您必须将构建配置添加到您的 csproj 文件:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='WebListener|AnyCPU'">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='IISExpress|AnyCPU'">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>

并且您必须添加可用的构建配置信息:

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Configurations>Debug;Release;WebListener;IISExpress</Configurations>
</PropertyGroup>

所以你可以用你的代码作为例子

#if WEBLISTENER
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif

#if IISEXPRESS
/* ... */
#endif

但是:使用此解决方案,您必须同时更改启动设置和build设置,才能在您的配置之间切换:

Build + Launch Configurations

有关更多信息,您可以查看这些资源:

关于c# - .Net Core 中每个启动设置的预处理器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com