网站项目的条件编译常量

时间:2015-07-09 17:47:38

标签: c# asp.net visual-studio-2012

我有一个我继承的网站项目,正在尝试清理。它有一个超过10,000 loc的Common.cs文件,所以我把它分成了不同的文件。问题是,Common文件的顶部是一个#define UAT语句,在整个代码中用于做出某些配置决定,例如:

#if UAT
    using WCFServiceUAT;
#else
    using WCFServicePRD;
#endif

所以现在,当我去部署这个应用程序的生产版本时,我将不得不在许多不同的地方删除#define语句,这似乎容易出错并且通常是个坏主意。 我正在寻找像条件编译常量这样的东西,我可以定义一次,并让它影响整个项目。

此类配置控件仅用于C#文件。 #define语句过去只需要在Default.aspx.cs和Common.cs中进行更改,但自从我的重组工作以来,它现在看起来更多了。虽然我的site.master文件可以根据某些配置更改标题,但这不是一个问题。

我试图改变项目的构建配置属性,但没有任何选项,如条件编译常量,并假设我的项目类型不支持它。还有其他方法将#define放在全局项目级别而不是每个文件的顶部吗?我找到的唯一解决方案是Web应用程序项目,并基于{{ 3}},我不相信我正在使用Web应用程序类型项目,因为没有.csproj文件。

1 个答案:

答案 0 :(得分:-3)

请参阅https://www.codeproject.com/Questions/233650/How-to-define-Global-veriable-in-Csharp-net

在项目子目录App_Code中,我创建了一个文件Globals.cs,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace GlobalVariables
{

    /// <summary>
    /// Summary description for Globals
    /// See https://www.codeproject.com/Questions/233650/How-to-define-Global-veriable-in-Csharp-net
    /// </summary>
    public static class Globals
    {
        //  Note that now the obsolete code now only leaves one warning
        //  for the block excluded code:
        //      Unreachable code detected
        //  instead of a warning line for each instance of obsolete code.
        //  The "Unreachable code detected" can be disabled and enabled with 
        //  #pragma warning disable 162 
        //  #pragma warning enable 162 
        public const bool UAT = true;

        static Globals()
        {
            //
            // TODO: Add constructor logic here
            //
        }
    }
}

在项目.ascx.cs文件中,您不需要使用&#34;

在您希望这会产生影响的地方,您可以这样做:

if (GlobalVariables.Globals.UAT)    //  See App_Code\Globals.cs
{
    //  Do the UAT stuff
}
else
{
    //  Do the other stuff
}

在未使用的代码中,您会收到一条警告: 警告CS0162:检测到无法访问的代码 可以禁用此消息:

#param warning disable 162
if (GlobalVariables.Globals.UAT)    //  See App_Code\Globals.cs
{
    //  Do the UAT stuff
}
else
{
    //  Do the other stuff
}
#param warning enable 162