我希望根据我设置的配置/符号动态编译一个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
谢谢!
发布于 2013-09-06 19:23:44
在项目中使用构建配置可以更好地处理这一问题。很可能目前还没有定义正确的符号。默认情况下,有一个调试和发布配置。您需要创建/编辑您的构建配置来匹配您的符号。此方法将允许您只从下拉对话框中选择要使用的build配置,然后再编译。
此外,有许多项目,我把自己画到了一个角落与各种#if DEBUG疯狂。如果您可以在配置文件中加入这些条件,并实现配置变换,那么将来您(或您的继任者)的生活就会变得更容易。
https://stackoverflow.com/questions/18449418
复制相似问题