macOS上开发.NET Core项目并部署到CentOS
一、使用yoeman脚手架工具构建项目
(一)安装yoeman
yoeman是脚手架工具,主要包括yo、Grunt、Bowert等,可以自动化构建许多不同类型的项目,包括ASP.NET Core项目,介绍:http://yeoman.io/
安装之前,确保系统中已经安装Node.js,这样才可以使用npm命令进行安装。
安装yo(-g进行全局安装):
$npm install -g yo
如果npm安装太过缓慢,可以使用阿里的镜像,方法详见:https://npm.taobao.org
(二)安装generator-aspnet
generator-aspnet是asp.net core的构建器,需要安装;
generator-aspnet依赖bower工具,也要一起安装。
$npm install -g bower $npm install -g generator-aspnet
(三)使用yo工具构建ASP.NET Core项目
终端中输入命令
yo aspnet
可以选择多个项目模板,这里以Web Application为例。
然后选择安装Bootstrap,接着输入项目名称
二、使用dotnet命令初始化项目
安装.NET Core SDK,需要安装1.0 RC3及以上版本,如果低于这个版本,使用“dotnet restore”还原命令不能成功,案例见:http://stackoverflow.com/questions/42011846/new-dotnet-core-project-cannot-restore,最新的RC版本在这里下载:https://www.microsoft.com/net/download/core
运行Web程序命令:
cd YoAppDemo dotnet restore
dotnet run
保持窗口不要关闭,接着打开网址:http://localhost:5000,查看模板显示效果。
三、使用VS Code开发项目
(一)安装VS Code,下载地址:http://www.vscode.org
安装C#、ASP.NET Core Snippets等插件,如图
(二)使用VS Code打开项目目录进行开发
这里要注意两点:
1. 如果是初次安装VS Code,在进行调试时,会弹出错误对话框,提示.NET Core Debugger等工具未下载安装,解决办法是打开一个工程文件,VS Code会自动安装OmniSharp、.NET Core Debugger等工具。如果不能自动安装,打开“命令面板”,运行“Restore Packages”进行安装。安装速度很慢,FQ后效果好些。
如果这几个工具没有安装完整,在进行程序调试时,还可能会出现MSBUILD错误,无法进行编译。
2. 调试不成功的另一个原因,检查lanuch.json文件中“program”后的相应字段是否已经自动替换,如果未替换需要手动替换。
三、部署到CentOS
(一)部署之前,确保服务器中已经安装.NET Core。安装时需要注意:就是开发端使用的.NET Core版本要与部署服务器所用的版本的一致(我安装的都是1.0 RC4),
安装步骤:
wget https://go.microsoft.com/fwlink/?linkid=841688 mkdir /opt/dotnet tar zxf dotnet.tar.gz -C /opt/dotnet ln -s /opt/dotnet/dotnet /usr/local/bin
查看是否安装成功
dotnet --version
(二)macOS中发布程序
进入程序目录,终端中执行命令
dotnet publish
然后进入程序目录下的Debug目录,将文件夹上传到CentOS服务器即可。
这里需要注意的是,使用Win10+VS2015的开发环境,发布到CentOS时需要修改Project.json文件,在runtimes节点增加CentOS相应配置,并在使用发布命令时,需要指定平台参数,比如:dotnet publish -r centos.7-x64,但经过测试,macOS+Yoeman+Dotnet core 1.0 rc4+VS Code开发的.NET Core程序在发布时不用指定平台参数,在CentOS服务器中也可以正常运行。
(三)CentOS中运行Web程序
进行程序目录,运行命令
dotnet run
这里可能有一个BUG,即使macOS和CentOS中安装的.NET Core都是1.0 RC4版本,但在CentOS中还会报错,提示找不到Microsoft.NETCore.App的1.0.4版本
我的解决办法是找到dotnet安装目录下的“Microsoft.NETCore.App”目录(如/opt/donet/shared/Microsoft.NETCore.App),然后将名为“1.0.3”的文件夹直接改为“1.0.4”,之后运行成功。
还可以使用Nginx配合,具体办法见之前的文章:http://www.cnblogs.com/zhangfeistudio/p/6441508.html