使用Environment.UserInteractive实现开发环境和生产环境的单独调试部署,转载请联系UP技控公众号。概述通常我们在做服务开发的时候,往往希望本地可以直接调试;在生产环境中,服务允许;这个时候一般的做法是写2段代码,需要在什么环境下注释那段代码,很麻烦,然后可以用Environment判断当前环境。C#中获取系统环境变量需要Environment类。它提供有关当前环境和平台以及如何操作它们的信息。这个类不能被继承。以下代码获取%systemdrive%的值,即"C:"stringsPath=Environment.GetEnvironmentVariable("systemdrive");Console.WriteLine(sPath);获取一个值以指示当前进程是否在用户交互模式下运行。publicstaticboolUserInteractive{get;}如果当前进程以用户交互模式运行则为真;否则,假的。注释此UserInteractive属性对于在没有用户界面的情况下运行的Windows进程或服务(例如IIS)报告false。如果此属性为false,则不会显示模式对话框或消息框,因为没有供用户交互的图形用户界面。ProgramexampleinternalstaticclassProgram{//////应用程序的主要入口点。///privatestaticvoidMain(string[]args){args=newstring[1];args[0]="WeChat.SendTemplateMsgJob";boolisReleaseUpdateJob=Environment.UserInteractive//只会执行旧数据的在线更新manuallyOnce&&args.Length>=1&&args[0].StartsWith("ReleaseUpdate");//AutofacAutofacConfig.Bootstrapper();if(Environment.UserInteractive){if(args.Length==0){//控制台开启MainServicemainService=newMainService();mainService.TestStartAndStop(args);}else{//指定你要测试的job#regionsetCultureen-USThread.CurrentThread.CurrentCulture=newSystem.Globalization.CultureInfo("en-US");Thread.CurrentThread.CurrentUICulture=newSystem.Globalization.CultureInfo("en-US");#endregionsetCultureen-USif(isReleaseUpdateJob){stringjobType=$"BigCRM.WinService.Jobs.{args[0]}";ReleaseUpdateJobjob=Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName,jobType).Unwrap()asReleaseUpdateJob;job.Call(null,args);}else{#regionloadconfigListjobConfigItems=JobConfigItem.Get();JobConfigItemconfig=jobConfigItems.FirstOrDefault(m=>m.JobType==args[0]);#endregionloadconfig#regioninitjobstringjobType=$"BigCRM.WinService.Jobs.{config.JobType}";BaseJobjob=Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName,jobType).Unwrap()asBaseJob;job.CronSchedule=config.CronExpression;job.JobType=config.JobType;job.BaseSettings=config.Settings;if(config.设置!=null){job.Settings=newQuartz.JobDataMap(config.Settings);}#endregioninitjobjob.Call(null,args);}Console.ReadLine();}}else{ServiceBase[]ServicesToRun;ServicesToRun=newServiceBase[]{newMainService()};ServiceBase.Run(ServicesToRun);}}}