我想根据我设置的配置/符号动态编译 ASP.NET 网站(不是具有 .csproj 的项目)。所以在配置管理器下,我有以下内容:
DEVELOPMENT
STAGING
PRODUCTION
在Default.aspx.cs我有:
#if PRODUCTION
lblMessage.Text = "PRODUCTION";
#elif STAGING
lblMessage.Text = "STAGING";
#elif DEVELOPMENT
lblMessage.Text = "DEVELOPMENT";
#endif
在web.config我有:
<system.codedom>
<compilers>
<compiler
language="c#;cs;csharp" extension=".cs"
compilerOptions="/d:DEVELOPMENT,STAGING,PRODUCTION"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</compilers>
</system.codedom>
但是,无论我选择哪种配置(开发、暂存、生产),当我查看网页时(重建后),我总是得到生产。奇怪的是,它总是编译我在“compilerOptions”属性中的最后一个。
虽然我可以找到解决这个问题的答案的各种问题,但它对我不起作用。我已经查看/尝试了这个但没有成功:
http://odetocode.com/blogs/scott/archive/2005/12/01/conditional-compilation-in-asp-net-2-0.aspx
http://blog.aggregatedintelligence.com/2008/07/conditional-compilation-in-aspnet.html
谢谢!