随着web.config中的调试设置消失,在.Net 5(MVC 6项目)中打开和关闭调试以及以下内容的等价物(如果有)是什么?
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug version");
#endif
答案 0 :(得分: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或其他任何内容。
答案 1 :(得分:5)
<强>更新强>
自写这个答案以来,我了解到.Net Core中的新方法是使用环境变量。您可以找到文章here和更多信息here。
您可以在debug下的项目属性中设置环境变量。在使用DI注入IHostingEnvironment
if (env.IsDevelopment())
{
//...
}
END UPDATE
@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
如果您在Debug或其他方面,它会检查您的解决方案配置(仍然可以在.Net 5中运行)。如果您的解决方案配置设置为Debug,则第一组代码将运行。如果选择Release(或其他任何内容),则第二个代码部分将运行。请参阅下图,了解从Debug到Release的下拉列表。