Ubuntu16.10下使用VSCode开发.netcore
按照通常的套路,首先创建一个空白的解决方案,需要用到.netcore sdk命令:
dotnet new sln -o dotnetcore_tutrorial
这个时候可以看到在目标目录下生成了一个同名的.sln文件,这个和使用vs是一样的,在我们实际开发过程中,通常要建立运行项目(web项目或者console项目),多个类库项目,以及单元测试项目。
首先建立一个类库项目,并将该项目加入到解决方案中:
dotnet new classlib -o DotNetTurorial.Common
dotnet sln add DotNetTurorial.Common/DotNetTurorial.Common.cspro
ps:最好把类库项目创建在dotnetcore_tutrorial目录下,这样可以保证.sln文件和项目文件在同一个目录下
通过同样的方式创建控制台项目和单元测试项目
dotnet new console -o DotNetTurorial.ConsoleApp
dotnet sln add DotNetTurorial.ConsoleApp/DotNetTurorial.ConsoleApp.csproj
dotnet new xunit -o DotNetTurorial.UnitTest
dotnet sln add DotNetTurorial.UnitTest/DotNetTurorial.UnitTest.csproj
现在整个项目的结构已经建立完成,我们用vscode打开解决方案对应的文件夹,目录结构如下:
接下来需要添加项目引用,也就是console项目需要引用类库项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\DotNetTurorial.Common\DotNetTurorial.Common.csproj"/>
</ItemGroup>
</Project>
同样的方法添加到测试项目:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>
<TargetFramework>netcoreapp2.</TargetFramework> <IsPackable>false</IsPackable>
</PropertyGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170427-09" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DotNetTurorial.Common\DotNetTurorial.Common.csproj"/>
</ItemGroup>
</Project>
配置好以后,切换到Console项目所在目录,执行dotnet restore 初始化项目,执行dotnet build 编译项目
接下来实现一个简单的业务逻辑,通过console程序添加学生信息,并把数据存入mysql中:
操作数据需要用到几个nuget包,需要在项目文件中手动配置(dotnetcore2.0 不需要再引入NETStandard.Library)。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="1.50.2"/>
<PackageReference Include="NETStandard.Library
" Version="1.6.0"/>
<PackageReference Include="SapientGuardian.MySql.Data" Version="6.9.813"/>
</ItemGroup>
</Project>
这里建议安装一个vscode插件nuget package manager,可以通过该插件快速安装nuget包,安装完成以后在项目文件中右键,选择命令面板
在命令面板中输入nuget,可以根据包名搜索出该包的不同版本,添加以后使用dotnet resotore 命令还原nuget库到依赖
在common项目中增加一个数据库操作类:
using System;
using Dapper;
using MySql.Data.MySqlClient; namespace DotNetTurorial.Common
{
public class SQLHelper
{
public const string _conStr="server=127.0.0.1;port=3306;user id=root;password=123456;database=dotnetcore;pooling=false";
public static int AddStudent(string name,int gender,string phone)
{
MySqlConnection connect=new MySqlConnection(_conStr);
var ret = connect.Execute("insert into student(name,gender,phone) values(@name,@gender,@phone)",new {name=name,gender=gender,phone=phone});
return ret;
}
}
}
在console项目中增加输入相关控制代码:
using System;
using DotNetTurorial.Common; namespace DotNetTurorial.ConsoleApp
{
class Program
{
static void Main(string[] args)
{
//Console.OutputEncoding = Encoding.UTF8; // 设置控制台编码
AddUser();
while(Console.ReadLine()!="exit"){
AddUser();
}
}
static void AddUser()
{
Console.WriteLine("please enter name:");
var name=Console.ReadLine();
Console.WriteLine("please enter gender,1 for male and 0 for female.");
var gender = Console.ReadLine();
Console.WriteLine("please enter phone:");
var phone = Console.ReadLine(); var ret = SQLHelper.AddStudent(name,Convert.ToInt32(gender),phone);
if(ret>)
{
Console.WriteLine("success");
}
}
}
}
在终端中输入dotnet run 运行程序
如果需要调试,需要安装C#扩展:
如果调试有输入到console程序,需要修改下:launch.json,注释掉"Console":"internalConsole", 增加:"externalConsole":true, 否则无法数据
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceRoot}/DotNetTurorial.ConsoleApp/bin/Debug/netcoreapp2.0/DotNetTurorial.ConsoleApp.dll",
"args": [],
"cwd": "${workspaceRoot}/DotNetTurorial.ConsoleApp",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
//"console": "internalConsole",
"externalConsole":true, //使用外置的控制台
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
源码地址:https://github.com/xienb/DotNetCore_Turorial.git
Ubuntu16.10下使用VSCode开发.netcore的更多相关文章
- Ubuntu16.04下配置VScode的C/C++开发环境
博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...
- ubuntu16.10下安装erlang和RabbitMQ
Ubuntu系统下安装RabbitMQ(我选择的是Ubuntu Server 16.10) 1.首先必须要有Erlang环境支持 --安装之前要装一些必要的库(Erlang开发环境同样)(参考:duq ...
- ubuntu16.04 下 C# mono开发环境搭建
本文转自:https://www.cnblogs.com/2186009311CFF/p/9204031.html 前记 之前我一直不看好C#的前景,因为我认为它只能在windows下运行,不兼容,对 ...
- Ubuntu 14.10 下使用IDEA开发Spark应用
1 环境准备 1.1 下载IDEA,可在官网下载 1.2 IDEA与Eclipse有点不同,IDEA中的New Projects相当于Eclipse中的workspace,New Module才是新建 ...
- windows 10下的python开发环境
linux子系统 按照文档 https://www.jianshu.com/p/2bcf5eca5fbc 的前五步,完成 ubuntu子系统安装. 不需安装图形桌面,无使用价值. 在https://w ...
- Ubuntu16.04下部署golang开发环境
一.需要文件 golang http://www.golangtc.com/download liteide http://www.golangtc.com/download/liteide 二.安装 ...
- ubuntu16.04 下使用vscode备忘录
微软的vscode是为程序员做了非常大贡献,其强大的功能和各个平台的可移植性给vscode带来了非常大的火力.在程序员的世界中非常的流行,算是一线明星了. 我把使用过程中遇到的一些问题做个记录,方便自 ...
- 解决双系统(Window10+Ubuntu16.10)下ubuntu安装git时提示软件包git没有可安装候选问题
选择升级系统: sudo apt-get update 升级之后再输入: sudo apt-get install git 可成功安装.
- Ubuntu16.10下mysql5.7的安装及远程访问配置
如何安装mysql 1.sudo apt-get update,如果很慢或者失败,需要在软件和更新中选择最佳服务器,勾选所有互联网下载选项及去掉其他软件所有勾选项 2.sudo apt-get upg ...
随机推荐
- JDBC连接数据库的安全性连接方法
PreparedStatement ps=null; ResultSet rs=null; Connection ct=null; try { Class.forName("com.mysq ...
- maven配置环境变量失败解决办法
配置maven路径什么的统统正确,最后测hi不成功.在网上搜索了好多资料方法都解不了 具体问题具体对待吧,如果有和我类似的小伙伴,可以尝试一下我的这个办法,在maven路径后面加/bin path变量 ...
- log4j动态监听配置修改
一般情况下,log4j的配置文件是log4j.properties.但是每次我们修改了配置文件之后程序并不会自动去加载,而需要我们去重启程序.那么怎么样才能让程序不用重启就监听到变化呢.代码如下: p ...
- thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决
thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决 一.总结 一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存 清缓存 ...
- 验证码之SimpleCaptcha (一)
在captcha中,两个比较著名的框架验证码有Jcaptcha和simpleCaptcha,Jcaptcha太庞大了,所以我选择了简单的SimpleCaptcha simpleCaptch ...
- Entity Framework 学习
Entity Framework 学习初级篇1--EF基本概况 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry. ...
- 【转载】MacOS下IntelliJ IDEA关联JDK1.8源码
原文地址: MacOS下IntelliJ IDEA关联JDK1.8源码 1 打开jdk设置,找到具体添加的地方 2 找到自己jdk的源码位置替换掉 3 如果没有源码或者源码没有下载解压,自己下载解压, ...
- hdu-2639 Bone Collector II 背包第K优
http://acm.hdu.edu.cn/showproblem.php?pid=2639 在背包的基础上维护一个size<=K的最大值集合,为什么维护K个就好了呢,因为如果当前状态有多余K个 ...
- apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享
首先查看我的这篇有关三方登录的博客,地址是http://www.cnblogs.com/gqx-html/p/8303567.html,配置完三方数据后可以从上一篇文章中的链接跳转到各个登录查看api ...
- day 7 -10 集合,文本、文件操作,函数
day7 一.回顾 1.列表和字典在循环里边尽量不要删除元素,很麻烦 2.元组:如果元组里边只有一个逗号,且不加逗号,次元素是什么类型,就是什么类型. 二.集合 ''' 集合:可变的数据类型,它里边的 ...