.Net 5中的调试设置

Ric*_*mes 7 asp.net-core-mvc asp.net-core

随着web.config中的调试设置消失,什么设置打开和关闭调试以及.Net 5(MVC 6项目)中以下内容的等价物(如果有)?

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif
Run Code Online (Sandbox Code Playgroud)

小智 7

在项目json文件中,您需要添加:

"frameworks": {
    "aspnet50": {
        "compilationOptions": {
            "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ]
        }
    },
    "aspnetcore50": {
        "compilationOptions": {
            "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中使用它如下:

#if WHATEVER_YOU_WANT_TO_CALL_IT
    .. your code..
#endif
Run Code Online (Sandbox Code Playgroud)

WHATEVER_YOU_WANT_TO_CALL_IT可以= DEBUG或其他任何东西.


Jab*_*ler 5

更新

自编写此答案以来,我了解到.Net Core中的新方法是使用环境变量。您可以在此处找到文章在此处找到更多信息。

您可以在调试下的项目属性中设置环境变量。使用DI注入后,代码看起来像IHostingEnvironment

if (env.IsDevelopment())
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

结束更新

@ user2095880的答案有效并且确实有效。但是,您可能需要一个不需要更改project.json即可投入生产的解决方案。

#if DEBUG
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello DEBUG CODE!");
            });
#else
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello LIVE CODE!");
            });
#endif
Run Code Online (Sandbox Code Playgroud)

如果您处于调试状态或其他状态,这将检查您的解决方案配置(在.Net 5中仍然有效)。如果您的解决方案配置设置为“调试”,则将运行第一组代码。如果您选择发布(或其他),第二个代码部分将运行。请参见下图,以从调试更改为发布的下拉菜单。

在此处输入图片说明