3

我想做这样事情。

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

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

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

4

3 回答 3

3

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

<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 网站”),但很少有项目在此基础上工作,所以没关系:)

于 2013-06-28T23:27:44.513 回答
2

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

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

于 2013-06-28T23:23:35.007 回答
1

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

app/web.config 中定义的预处理器仅影响在您的网站/应用程序运行后编译的代码,但在 Web、控制台应用程序和库的情况下,所有代码都会首先编译并作为程序集部署您的静态内容和资源。

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

于 2013-06-29T00:01:37.627 回答