C#precompile指令 - 使用一个变量来判断要编译的代码

时间:2012-01-07 16:09:32

标签: c# c-preprocessor

我在C#项目中使用Web服务。 我在线和在localhost上测试项目。 我的代码如下:

 //var proxy = new PanoNestWebsite.ScheduleImagePanonest.ScheduleImageProcessingClient();
 //var s = new ScheduleImagePanonest.ScheduleImageProcessing();
 var proxy = new ScheduleImageLocal.ScheduleImageProcessingClient();
 var s = new ScheduleImageLocal.ScheduleImageProcessing();

例如,如果我想在线部署它,我取消注释前两行,并评论最后两行。

但是我还有很多变化,我不喜欢评论和取消注释所有行。 我如何使用预处理指令来定义一个变量,如:IsLocal和我只是将其设置为true以包含本地代码,或者设置为false以包含服务器代码? 我该怎么写这样的东西?

2 个答案:

答案 0 :(得分:3)

如果这是你正在处理的事情,我建议采用另一种方法,可能是一些IOC / DI,其中这两个类都实现了一个接口,你在app.config / web中进行配置。配置指向它的类型。

所以而不是

var proxy = new ScheduleImageLocal.ScheduleImageProcessingClient();

你会改为

var proxy = IoCFactory.Resolve<IScheduleImagingProcessingClient>();

或其他类似的东西,但是你的图书馆有效。

如果您使用Unity,则会将IScheduleImagingProcessingClient接口指向配置文件中的具体类型。

答案 1 :(得分:1)

您可以使用项目属性来定义值,或者使用#define SOME_KEY:

#if KEY

    ... Code goes here

#endif