巧用Environment.UserInteractive 实现开发和生产环境的分开调试部署
概述
平常我们在做服务开发的时候,经常是希望本地可以直接调试;在生产环境是以服务允许的;这时候,一般的做法写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 实现开发和生产环境的分开调试部署相关推荐
- ionic app 开发和生产环境的配置
前言 像 Angular2 一样,希望 ionic 可以提供 2 个文件 ( environment.dev.ts 和 environment.prod.ts ),其中包含与开发和生产环境相对应的不同 ...
- 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样...
在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": {"publish-m ...
- 开发测试服务器配置信息,node服务端中台实现及开发测试生产环境配置
本人node服务端新人一枚,网上找了不少资料,看了很多别人的配置信息,感觉都不是很合适,看的多了自己也明白配置的具体思路跟实现方式了,以下为我的实现方式.通过package.json里面的script ...
- 极光推送环境区分php,JPush Android 推送如何区分开发、生产环境
我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时.只有 iOS 区分了开发和生产环境,而 Android 则没有.但实际开发中又确实经常需要针对开发和生产环境分别来推 ...
- git(gitlab)子模块功能在团队协同开发和生产环境中的应用(git,gitlab,TortoiseGit,CI/CD,Jenkins,docker-compose,分支合并,开发环境,测试环境)
git(gitlab)子模块功能在团队协同开发和生产环境中的应用 目录 git(gitlab)子模块功能在团队协同开发和生产环境中的应用 一.前言 二.先决条件 三.创建gitlab项目(项目管理员操 ...
- java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw
java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...
- php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性. 开发安全的服务 需要实现安全性的四个方面: 身份验证. 访问授权.验证是否允许访问主体对指定数据完成请求的操作. 审计. ...
- 基于webpack的PC端和mobile端开发以及生产环境的搭建
我们用webpack做单页面应用开发应该尝试过很多次了,如果在同一个项目需要支持PC端和移动端,做成多页面应用,开发时能根据请求的终端返回不同的内容,应该怎么做呢?以下描述的是我尝试的一种方案,并且以 ...
- vue服务端渲染——项目搭建、开发、生产环境的部署、浏览渲染、SEO优化
几个月前,公司要求(服务端渲染)--用vue-ssr做了个服务端渲染,从起搭建.开发.部署.浏览器渲染到优化,希望对有需要的小伙伴有帮助,若是有不足之处,望指出,一起讨论学习.--几个月过去了,公司又 ...
最新文章
- HTML5 localStorage本地儲存
- 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
- 触摸事件练习 -- 手势解锁
- 用jQuery设置多个css样式
- CentOS离线安装gcc4.8.2 + 并安装网卡驱动
- ArcGIS API For JavaScript——空间查询(QueryTask)
- [看过不再忘]详细解析chmod修改文件权限
- python生成的exe反编译
- timesten java_使用java调用timesten实现Oracle入库
- Tilera 服务器上OpenJDK的安装尝试
- Mac OS X 窗口操作快捷键
- 配对t检验的应用条件是什么_配对t检验的适用条件,独立样本T检验、配对T检...
- 在一张表里实现省市区镇村五级联动
- linux waitpid 用法,linux的fork(),waitpid()及wait()的用法
- 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、二十四节气)...
- TensorFlow已死,TensorFlow万岁!
- 【5G网络基础,熟知即可】
- OpenStack Victoria版——6.2计算节点-Nova计算服务组件
- 【SS524 平替 HI3521DV200性能对比表】
- 仿soul交友盲盒1.0全开源源码/完整盲盒交友系统源码
热门文章
- GridView导出为Excel
- 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落
- 常用模块之 time,datetime,random,os,sys
- 在FC中如何获取fcdot文件
- Git Bash的一些命令和配置
- php函数的初步使用
- 【小安翻唱】凉宫春日的忧郁--冒険でしょでしょ第五届外语歌曲大赛助兴节目~绫魂论坛送aya的生日礼物筹备开始~...
- mysql interval 3 day_Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用
- 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
- Install Odoo 11 on CentOS 7