我可以在web.config或app.config中设置条件编译常量吗?如果可以,如何设置
本文关键字:config 设置 如果可以 何设置 编译 web app 我可以 条件 常量 | 更新日期: 2023-09-27 18:20:16
我想做这种事情。
我可以在app.config文件中定义我的符号(TESTING或DEBUG等)吗?如果是的话,你能提供一个app.config的例子吗?因为我不确定从哪里开始?
编辑:将app.config添加到标题中,因为我想在app.config 中执行此操作
更新:我似乎只能在生成时设置条件编译常量(web.config和app.config在运行时使用,并且只能在编译程序集之后使用)。要设置条件编译常量,我需要在csproj文件或msbuild中的选项中执行此操作。
您可以在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.config或app.config文件中不可用。
编辑后添加:这些文件实际上并没有编译,在编译过程中使用#debug预处理器值来告诉编译器该做什么。
不,这在web应用程序类型的项目中是不可能的。
app/web.config中的预处理器定义只影响在您的网站/应用程序运行后编译的代码,但在web、控制台应用程序和库的情况下,所有代码都会首先编译,并与静态内容和资源一起部署为程序集。
我建议创建一个应用程序设置,然后进行运行时检查,而不是编译时检查。这将允许您在运行时启用app/web.config中的设置,而不需要重新编译代码才能达到预期效果。