我想根据我设置的配置/符号动态编译 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
谢谢!