【问题标题】:Can I set a conditional compilation constant in a web.config or app.config, if so how?我可以在 web.config 或 app.config 中设置条件编译常量吗?如果可以,如何设置?
【发布时间】:2013-06-28 23:21:55
【问题描述】:

我想做this之类的事情。

我可以在 app.config 文件中定义我的符号(TESTING 或 DEBUG 等)吗?如果是这样,您能否提供一个示例说明 app.config 的外观,因为我不确定从哪里开始?

编辑:将 app.config 添加到标题中,因为我想在 app.config 中执行此操作

更新:看来我只能在构建时设置条件编译常量(web.config 和 app.config 在运行时使用,并且只有在程序集编译后才能使用)。要设置条件编译常量,我需要在 csproj 文件或 msbuild 中的选项中执行此操作。

【问题讨论】:

  • 你想达到什么目的?
  • 我想确保我的部分代码不会被编译,除非我正在做一些单元测试(实际上是一些集成测试)。

标签: c#


【解决方案1】:

您可以像这样在 web.config 中定义预处理器符号(来源:http://social.msdn.microsoft.com/Forums/en-US/61ad1a74-ae76-47eb-86a9-1bf09f64c906/define-debug-constant-for-a-web-project

<system.codedom>
    <compilers>
        <compiler
            language="c#;cs;csharp"
            extension=".cs"
            type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            compilerOptions="/d:DEBUG,MYCONST"/>
    </compilers>
</system.codedom>

查看compilerOptions="" 属性,您可以在其中定义可以在前端.aspx.ascx.master 文件中使用的其他符号。我不知道这是否适用于 Razor 视图。这种方法也不适用于在设计时在 IDE 中编译的代码隐藏文件,这些文件有自己的符号。

大概这也适用于不使用设计时编译的“代码文件”类型项目(即“ASP.NET 网站”),但很少有项目在此基础上工作,所以没关系 :)

【讨论】:

  • 我没有使用 web 项目,目前我只是在 c# 库项目和 app.config 文件中查看这样做。目前我似乎无法让它工作。
  • @TwistedInferno 那你为什么在 Q 的标题中说 web.config?无论如何,类库的编译时符号是在 .csproj 文件中定义的,而不是 app.config(它存储 runtime 配置)。
  • 是的,我的错,我昨晚很晚才起床。谢谢戴
【解决方案2】:

不,处理器指令在 web.config 或 app.config 文件中不可用。

编辑添加:这些文件实际上并没有编译,在编译期间使用#debug预处理器值来告诉编译器要做什么。

【讨论】:

  • 认为可能是这种情况,但戴的回答表明并非如此。 app.config 文件是否只在运行时工作,这在 web.config 中如何工作?
  • @TwistedInferno Dai 的回答适用于在网站被请求该页面时为 aspx ascx 编译文件背后代码的网站。
【解决方案3】:

不,这对于 Web 应用程序类型的项目是不可能的。

app/web.config 中定义的预处理器仅影响在您的网站/应用程序运行后编译的代码,但对于 web、控制台应用程序和库,所有代码都首先编译并部署为与您的静态内容和资源一起组装。

我建议改为创建应用程序设置,然后进行运行时检查而不是编译时检查。这将允许您在运行时启用 app/web.config 中的设置,而不需要重新编译代码以达到预期效果。

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 2011-02-24
    • 2011-10-20
    • 2017-12-01
    • 2011-02-10
    • 1970-01-01
    • 2014-05-22
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多