概述

平常我们在做服务开发的时候,经常是希望本地可以直接调试;在生产环境是以服务允许的;这时候,一般的做法写2段代码,需要什么环境就注释那段代码,这样很麻烦,这时候就可以利用Environment判断当前的环境。C#中获取系统环境变量需要用到Environment 类。其中提供了有关当前环境和平台的信息以及操作它们的方法。该类不能被继承,以下代码得到%systemdrive%的值,即“C:”

string sPath = Environment.GetEnvironmentVariable("systemdrive");
Console.WriteLine(sPath);

获取一个值,用以指示当前进程是否在用户交互模式中运行。

public static bool UserInteractive { get; }

如果当前进程在用户交互模式中运行,则为true ;否则为 false。

注解

此UserInteractive 属性报告 false 的 Windows 进程或服务(如 IIS)在没有用户界面的情况下运行。如果此属性为 false ,则不会显示模式对话框或消息框,因为没有可供用户与之交互的图形用户界面。

Program范例

  internal static class Program{/// <summary>/// 應用程式的主要進入點。/// </summary>private static void Main(string[] args){args = new string[1];args[0] = "WeChat.SendTemplateMsgJob";bool isReleaseUpdateJob = Environment.UserInteractive // 上線更新舊資料,都只會手動執行一次&& args.Length >= 1&& args[0].StartsWith("ReleaseUpdate");//AutofacAutofacConfig.Bootstrapper();if (Environment.UserInteractive){if (args.Length == 0){//Console 開啟MainService mainService = new MainService();mainService.TestStartAndStop(args);}else{//指定想要測試的 job#region set Culture en-USThread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");#endregion set Culture en-USif (isReleaseUpdateJob){string jobType = $"BigCRM.WinService.Jobs.{args[0]}";ReleaseUpdateJob job = Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName, jobType).Unwrap() as ReleaseUpdateJob;job.Call(null, args);}else{#region load configList<JobConfigItem> jobConfigItems = JobConfigItem.Get();JobConfigItem config = jobConfigItems.FirstOrDefault(m => m.JobType == args[0]);#endregion load config#region init jobstring jobType = $"BigCRM.WinService.Jobs.{config.JobType}";BaseJob job = Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName, jobType).Unwrap() as BaseJob;job.CronSchedule = config.CronExpression;job.JobType = config.JobType;job.BaseSettings = config.Settings;if (config.Settings != null){job.Settings = new Quartz.JobDataMap(config.Settings);}#endregion init jobjob.Call(null, args);}Console.ReadLine();}}else{ServiceBase[] ServicesToRun;ServicesToRun = new ServiceBase[]{new MainService()};ServiceBase.Run(ServicesToRun);}}}

巧用Environment.UserInteractive 实现开发和生产环境的分开调试部署相关推荐

  1. ionic app 开发和生产环境的配置

    前言 像 Angular2 一样,希望 ionic 可以提供 2 个文件 ( environment.dev.ts 和 environment.prod.ts ),其中包含与开发和生产环境相对应的不同 ...

  2. 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样...

    在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": {"publish-m ...

  3. 开发测试服务器配置信息,node服务端中台实现及开发测试生产环境配置

    本人node服务端新人一枚,网上找了不少资料,看了很多别人的配置信息,感觉都不是很合适,看的多了自己也明白配置的具体思路跟实现方式了,以下为我的实现方式.通过package.json里面的script ...

  4. 极光推送环境区分php,JPush Android 推送如何区分开发、生产环境

    我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时.只有 iOS 区分了开发和生产环境,而 Android 则没有.但实际开发中又确实经常需要针对开发和生产环境分别来推 ...

  5. git(gitlab)子模块功能在团队协同开发和生产环境中的应用(git,gitlab,TortoiseGit,CI/CD,Jenkins,docker-compose,分支合并,开发环境,测试环境)

    git(gitlab)子模块功能在团队协同开发和生产环境中的应用 目录 git(gitlab)子模块功能在团队协同开发和生产环境中的应用 一.前言 二.先决条件 三.创建gitlab项目(项目管理员操 ...

  6. java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw

    java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...

  7. php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...

    为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性. 开发安全的服务 需要实现安全性的四个方面: 身份验证. 访问授权.验证是否允许访问主体对指定数据完成请求的操作. 审计. ...

  8. 基于webpack的PC端和mobile端开发以及生产环境的搭建

    我们用webpack做单页面应用开发应该尝试过很多次了,如果在同一个项目需要支持PC端和移动端,做成多页面应用,开发时能根据请求的终端返回不同的内容,应该怎么做呢?以下描述的是我尝试的一种方案,并且以 ...

  9. vue服务端渲染——项目搭建、开发、生产环境的部署、浏览渲染、SEO优化

    几个月前,公司要求(服务端渲染)--用vue-ssr做了个服务端渲染,从起搭建.开发.部署.浏览器渲染到优化,希望对有需要的小伙伴有帮助,若是有不足之处,望指出,一起讨论学习.--几个月过去了,公司又 ...

最新文章

  1. HTML5 localStorage本地儲存
  2. 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
  3. 触摸事件练习 -- 手势解锁
  4. 用jQuery设置多个css样式
  5. CentOS离线安装gcc4.8.2 + 并安装网卡驱动
  6. ArcGIS API For JavaScript——空间查询(QueryTask)
  7. [看过不再忘]详细解析chmod修改文件权限
  8. python生成的exe反编译
  9. timesten java_使用java调用timesten实现Oracle入库
  10. Tilera 服务器上OpenJDK的安装尝试
  11. Mac OS X 窗口操作快捷键
  12. 配对t检验的应用条件是什么_配对t检验的适用条件,独立样本T检验、配对T检...
  13. 在一张表里实现省市区镇村五级联动
  14. linux waitpid 用法,linux的fork(),waitpid()及wait()的用法
  15. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、二十四节气)...
  16. TensorFlow已死,TensorFlow万岁!
  17. 【5G网络基础,熟知即可】
  18. OpenStack Victoria版——6.2计算节点-Nova计算服务组件
  19. 【SS524 平替 HI3521DV200性能对比表】
  20. 仿soul交友盲盒1.0全开源源码/完整盲盒交友系统源码

热门文章

  1. GridView导出为Excel
  2. 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落
  3. 常用模块之 time,datetime,random,os,sys
  4. 在FC中如何获取fcdot文件
  5. Git Bash的一些命令和配置
  6. php函数的初步使用
  7. 【小安翻唱】凉宫春日的忧郁--冒険でしょでしょ第五届外语歌曲大赛助兴节目~绫魂论坛送aya的生日礼物筹备开始~...
  8. mysql interval 3 day_Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用
  9. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  10. Install Odoo 11 on CentOS 7