c# - 动态编译的 ASP.NET 网站

标签 c# asp.net web-config

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

但是,无论我选择哪种配置(DEVELOPMENT、STAGING、PRODUCTION),我在查看网页(重建后)时总是得到 PRODUCTION。奇怪的是,它总是编译我在“compilerOptions”属性中最后的任何内容。

虽然我可以找到各种问题以及该问题的已解决答案,但它对我不起作用。我已经看过/尝试过但没有成功:

http://odetocode.com/blogs/scott/archive/2005/12/01/conditional-compilation-in-asp-net-2-0.aspx

Conditional compilation symbols not being defined

http://blog.aggregatedintelligence.com/2008/07/conditional-compilation-in-aspnet.html

谢谢!

最佳答案

使用 build configurations 会更好地处理这个问题在项目中。当前可能未定义正确的符号。默认情况下,有调试和发布配置。你需要 create/edit您的构建配置以匹配您的符号。此方法将允许您从构建配置下拉对话框中选择要使用的构建配置并构建。

此外,还有许多项目让我陷入了各种疯狂的#if DEBUG 困境。如果您可以将这些条件分解到您的配置文件中并实现 configuration transforms那么你会让你(或你的继任者)将来的生活更轻松。

关于c# - 动态编译的 ASP.NET 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449418/

相关文章:

c# - 想知道在 HttpBeginRequest 中等待的请求的确切值

java - 如何使用Azure Web应用程序的配置文件

c# - 使用 lambda 表达式设置方法

c# - 使用 Google 类型搜索轻松搜索团队服务器 (TFS) 中的错误

asp.net - 如何在Web.Config中禁用目录浏览

c# - 位置 inheritInChildApplications 杀死调试器?

asp.net - 无法在 Web 配置文件中设置输出缓存设置

c# - ServiceStack JsonSerializer DeserializeFromString 正在删除双引号

c# PDFSharp - Table.Clone 有什么意义?

html - 如何在不使用 - 连字符的情况下使用 CSS 设置字体大小?