Mac/Windows开发跨平台.NET Core 控制台程序
自从微软开始在Github上开源搞.NET Core后,.NET的跨平台逐渐就成真了。多年使用各种语言,说实话还是csharp用起来最舒服。不过现在的工作环境里使用它的机会比较少,大部分时候只是用来写一写命令行程序。不过,经过一段时间的开发,我发现大部分程序都可以被分离出有脸的部分/无脸的部分。
其中无脸的部分,最适合做成命令行程序。一旦你做成了命令行程序,对它进行的测试就会变得简单,因为命令行本身就是一组API接口,只不过是以命令options的形式组织的。
这里记录下MAC+Windows环境开发.NET Core命令行程序的小抄:
MacOS下开发.NET Core 命令行程序
- Mac下安装.NET Core 2.0 preview: https://www.microsoft.com/net/core/preview#macos
- Mac下创建项目目录,例如dothello
- cd到dothello目录
- 创建控制台程序:
dotnet new console,会自动生成dothello.csproj以及Program.cs - 创建sln:
dotnet new sln --name dothello - 将csproj添加到sln:
dotnet sln add dothello.csproj - 编写csharp代码。
- 编译:
dotnet build dothello.sln - 修改dothello.csproj,添加mac运行时
<PropertyGroup>
<RuntimeIdentifiers>osx.10.10-x64</RuntimeIdentifiers>
</PropertyGroup>
- 分析并准备依赖链:
dotnet restore dothello.sln - 发布Mac版(无需安装.NETCore即可运行的
Self-Contain模式):dotnet publish -r osx.10.10-x64 dothello.sln -c Release - 如果publish后不实用-r 指定运行时,则会发布依赖于dothello.csproj里指定的framework版本运行时的程序。
配置Windows的Visual Studio 项目解决方案
可以根据上述方式发布Windows上依赖于.netcore运行时的版本或者自包含的Native包。但是,如果想发布.NET 3.5下可以跑的单exe程序,有点问题。
解决方式是,切到Windows下使用VS建好VS版本的sln和csproj:
dothello_vs.sln
dothello_vs.csproj
然后切回MacOS,使用msbuid(.netcore自带)编译指定frameworkd即可:
msbuild /p:TargetFramework=net35 dothello_vs.sln /p:Configuration=Release
这个地方其实publish应该做的更好一些,或者让msbuild直接支持dotnet创建的sln。
Mac/Windows开发跨平台.NET Core 控制台程序的更多相关文章
- 在Mac下运行ASP.NET Core应用程序
在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的第一个ASP.NET应用. 开发环境搭建 首先 ...
- Mac下运行ASP.NET Core应用程序
Mac下运行ASP.NET Core应用程序 在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的 ...
- ASP.NET Core 中文文档 第二章 指南(8) 使用 dotnet watch 开发 ASP.NET Core 应用程序
原文:Developing ASP.NET Core applications using dotnet watch 作者:Victor Hurdugaci 翻译:谢炀(Kiler) 校对:刘怡(Al ...
- MAC COCOA call command 调用终端控制台程序
MAC COCOA call command 调用终端控制台程序 STEP 1 先写一个C++ DOS程序 STEP2 使用NSTask来运行,然后用NSPipe和 NSData来接受运行的结果字符串 ...
- 使用 dotnet watch 开发 ASP.NET Core 应用程序
使用 dotnet watch 开发 ASP.NET Core 应用程序 原文:Developing ASP.NET Core applications using dotnet watch作者:Vi ...
- VisualStudioCode创建的asp.net core控制台程序部署到linux
1.asp.net core控制台程序 static void Main(string[] args) { ; ) { Console.WriteLine("Hello World!&quo ...
- 在.NET Core控制台程序中使用依赖注入
之前都是在ASP.NET Core中使用依赖注入(Dependency Injection),昨天遇到一个场景需要在.NET Core控制台程序中使用依赖注入,由于对.NET Core中的依赖注入机制 ...
- 使用VS Code开发ASP.NET Core 应用程序
最新教程:http://www.cnblogs.com/linezero/p/VSCodeASPNETCore.html 使用VS Code开发ASP.NET Core 应用程序 准备 1.安装VS ...
- .Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'.
.Net Core 控制台程序错误:Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible wi ...
随机推荐
- 设计模式的征途—19.命令(Command)模式
在生活中,我们装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或换气扇.在购买开关时,用户并不知道它将来到底用于控制什么电器,也就是说,开关与电灯.换气扇并无 ...
- 【有意思的BUG】分享按钮 分享功能
[分享按钮]是一个常见的功能,你可以把看到的有意思的东西分享到自己的BLOG.朋友圈之类的地方. 但是,分享出去的文本(也可以包含图片)在每个目标网站上面的格式并不是统一的,所以就存在了美感的三六九等 ...
- python——变量
参考资料: Python程序设计与实现 变量名的命名规则 仅仅由大.小写英文字母,下划线(_),数字(不可作为变量名的开头)组合而成: 不能使用Python关键字和函数名作为变量名: 变量名不能包含空 ...
- latch相关视图整理
latch相关视图整理(原创) V$LATCH V$LATCH视图在选取X$KSLLT记录时,进行了Group By及SUM运算,从而得出了一个汇总信息,保存了自实例启动后各类栓锁的统计信息.常用于当 ...
- MyISAM 和InnoDB 区别
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别 为:MyISAM类型不支持事务处理等高级处 ...
- CSS基础语法
一.CSS常用选择器 前言: 页面中,所有的CSS代码,需要写入到<style></style>标签中. style标签的type属性应该选择"text/css&qu ...
- spring-aop的简单实例注解版
项目结构如图,基本的spring的配置就不在赘述 1.首先编写自定义的切面类 package org.wu.test; import org.aspectj.lang.annotation.After ...
- WebApp开发总结
WebApp开发总结 框架的使用网络上都有教程,就不写了,主要记录下个人的开发总结以方便以后开发注意. css公用样式统一定义 css样式抽出复用 appearance: none; 取消系统默认样式 ...
- SQL笔记 --- 数据库设计步骤(转)
SQL笔记 --- 数据库设计步骤 目录 总体设计过程需求分析概念结构设计逻辑结构设计数据库物理设计数据库实施数据库运行和维护 总体设计过程 0 » 下一篇:vim 命令集 posted @ 2012 ...
- Go 语言,开源服务端代码自动生成 框架 - EasyGoServer
EasyGoServer 作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblog ...