7

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

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif
4

2 回答 2

7

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

"frameworks": {
    "aspnet50": {
        "compilationOptions": {
            "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ]
        }
    },
    "aspnetcore50": {
        "compilationOptions": {
            "define": [ "WHATEVER_YOU_WANT_TO_CALL_IT" ]
        }
    }

然后在您的代码中按如下方式使用它:

#if WHATEVER_YOU_WANT_TO_CALL_IT
    .. your code..
#endif

其中 WHATEVER_YOU_WANT_TO_CALL_IT 可以 = DEBUG 或其他任何内容。

于 2015-02-11T21:25:23.493 回答
5

更新

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

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

if (env.IsDevelopment())
{
    //...
}

结束更新

@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

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

在此处输入图像描述

于 2015-11-12T16:17:30.573 回答