首页 新闻 赞助 找找看

.net core求扫盲,看我理解的对不对

0
悬赏园豆:10 [已解决问题] 解决于 2017-10-29 17:44

准备学习.net core,看了一些资料,我把我理解的写出来,大家看下我理解的对不对?

1. .net core 现在出到 2.0了

2. .net core 可以运行在win, mac, linux 3个平台上,存在 .net core sdk for win, sdk for mac, sdk for linux 三个版本(这个不知道理解的对不对?)

3. 如果我再centos上安装了.net core sdk for linux,是不是意味着我可以在centos上做.net core 程序的开发和运行了(既能开发,也能运行 是吗??)

4. 如果我想在WIN上用VS2015开发.net core程序,然后放到centos上跑:我是不是要在开发机上装.net core sdk for win, 和 在目标运行机上装 .net core sdk for linux? 

5. 用.net core sdk for win 开发的程序,能在安装了 .net core for linux的centos上运行吗?还是想在centos上运行,开发的时候必须用 .net core sdk for linux ?

6.我再.net core sdk 的下载页面,看到了 sdk 和 runtime 2种,不知道是什么意思?

 

.net core 初学者不要见笑

萨尔的主页 萨尔 | 初学一级 | 园豆:20
提问于:2017-10-29 14:44
< >
分享
最佳答案
2

1. 是的

2. 对,.net core 支持的操作系统详见 .NET Core 2.0 - Supported OS versions

3. .net core sdk 包含 .net core runtime 与 cli (dotnet命令),如果你用 vim 作为编辑器,就可以在 centos 上进行开发了(用 dotnet 命令进行 build)。

4. 在目标 centos 机器上即使不安装 .net core sdk for linux 也可以运行 .net core 程序,只要在开发机上以 Self-contained deployment 的方式发布,默认是 Framework-dependent deployment 发布方式(需要安装sdk),详见 .NET Core application deployment

5. 见4

6. 见3

收获园豆:10
dudu | 高人七级 |园豆:31075 | 2017-10-29 15:03

谢谢回答!

 

有些内容希望确认下:

1.两种发布方式:一种需要运行机上安装有对应的.net core sdk,另一种独立部署模式,发布包中会包含运行需要的组件,目标运行机上不需要安装.net core相关的东西。

2. win上开发,放到centos上运行。这种场景:

  1。因为程序最后是要放到 linux 上运行的,所以开发的时候 win 上要用 .net core sdk for linux 开发(就是win上要安装 sdk for linux)?

  2。不用管程序最后会在哪里运行,在win上开发就安装 sdk for win, 在 centos 上开发就安装 sdk for linux。

  这里,1应该是错的, 2应该是对的。 我理解的对不对 ?

3. .net core 支持的操作系统, 是不是不包含 安卓和苹果手机啊?

4. .net core 是不是不能用来开发 winform 和 wpf 啊,VS里没看到这个选项?

萨尔 | 园豆:20 (初学一级) | 2017-10-29 15:28

@萨尔: 

1. 两种发布方式:一种运行机上需要另外安装.net core runtime,另一种不需要另外安装.net core runtime(发布时会自动把runtime包含在内)

2. 您的理解是对的,2.1是错的。

3. 不支持 Android 与 iOS 

4. 你可以了解一下 UWP

dudu | 园豆:31075 (高人七级) | 2017-10-29 16:42

@dudu: thank you

还有2个问题问下:

1. 我看网上教程,VS2015 安装 .net core ,除了安装.net core sdk, 还要按装 VS2015Tools.Preview2.0.1.exe 这个东西,请问这个VS2015Tools.Preview2.0.1.exe文件是什么? 做什么用的?

2. VS2017集成了.net core 2.0, 那么VS2015 支持安装 .net core 2.0吗 ?

萨尔 | 园豆:20 (初学一级) | 2017-10-30 11:27

@萨尔: 

1. 不安装VS2015Tools.Preview2.0.1,Visual Studio 2015是不支持.NET Core开发的。VS2015Tools是嫁接.net core sdk与Visual Studio的工具。

2. VS2015不支持.net core 2.0。

dudu | 园豆:31075 (高人七级) | 2017-10-30 11:51

@dudu:

1.你的意思是VS2015不支持.net core 开发,需要安装 VS2015Tools 这个插件来间接支持.net core ?

我看网上教程开发 .net core 1.0 都是用VS2015 + .net core 1.0 sdk + VS2015Tools的组合的。

2.还有对于core 2.0 ,VS2015就算安装VS2015Tools也不行吗?

萨尔 | 园豆:20 (初学一级) | 2017-10-30 14:51

@萨尔: 

1. 如果你只安装 .net core sdk ,不安装 VS2015Tools ,用 VS2015 创建项目时根本没有 .net core 的项目模板

2. VS2015Tools 只支持 .net core 1.0 与 1.1

dudu | 园豆:31075 (高人七级) | 2017-10-30 15:42

@dudu: 

我又来了

1.用VS2017怎么独立部署呢?看了教程不成功

2.独立部署,用VS发布后,拷贝到centos上(没有安装.net core),怎么运行程序呢?

 

我用VS2017独立部署的流程:

1. 新建.net core 2.0 项目

2. 编辑ConsoleApp3.csproj文件,添加一行

<RuntimeIdentifiers>centos.7-x64</RuntimeIdentifiers>

3. 从Debug改成release

4. 生成 -> 生成解决方案

5. 生成 -> 发布ConsoleApp3

最后在release目录下生成PublishOutput文件夹,里面有4个文件,只有20kb,不像包含了.net core的运行时啊。最后拷贝到centos上也不知道怎么运行

 

微软官方的教程,是 .net core 1.1 版本的,不知道还适用 2.0 版本吗?

 

》》》》》》》》》》》》》》》》》》》》》》》

 

我把“<RuntimeIdentifiers>centos.7-x64</RuntimeIdentifiers>” 中 RuntimeIdentifiers 改成 RuntimeIdentifier。(不能用 ; 加多个运行环境了,只能生成1个)

编译出一个60M的,应该是对的,然后我把它拷贝到了centos上,怎么运行呢?

敲不出来 dotnet ? 

 

萨尔 | 园豆:20 (初学一级) | 2017-10-31 11:45

@萨尔: 我是用dotnet命令发布的,不需要设置RuntimeIdentifiers,在 Windows 开发机上运行下面的发布命令

dotnet publish -c Release -r linux-x64

发布生成的文件会保存在 bin/Release/netcoreapp2.0/linux-x64/publish 文件夹中,
用 scp 命令将发布文件上传到 linux 服务器,发布文件中不带扩展名的与 VS 项目名称同名的文件就是运行项目的可执行文件,在 linux 服务器上用 chmod +x 命令将其改为可执行的,就可以用它运行了。

# ./CNBlogs.Demo.Web
Hosting environment: Production
Content root path: /data/demo.cnblogs.com
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

注:Linux服务上没有安装 .net core sdk

dudu | 园豆:31075 (高人七级) | 2017-10-31 18:40

@dudu: 谢谢回答

 

我的centos也是没安装.net core sdk的, 但是我运行 ./ConsoleApp3  报这个错:

 

我查了文档,是不是还要在centos上安装这些依赖文件:

 

这些文件你有安装在linux上吗? 需不需要安装?

萨尔 | 园豆:20 (初学一级) | 2017-10-31 20:54

@萨尔: 我用的是Ubuntu

dudu | 园豆:31075 (高人七级) | 2017-10-31 21:23

@dudu

萨尔 | 园豆:20 (初学一级) | 2017-10-31 22:00

@dudu: 

Ubuntu也是要安装的吧,你的Ubuntu上没安装吗?

萨尔 | 园豆:20 (初学一级) | 2017-11-01 09:03

@萨尔: 我记不清当时安装了哪些组件

dudu | 园豆:31075 (高人七级) | 2017-11-01 09:57

@dudu: 

centos上安装了libunwind 和 libicu, 能够运行了。

萨尔 | 园豆:20 (初学一级) | 2017-11-01 15:46

@dudu: 

我在centos上安装的sdk,然后把发布好的文件拷贝到centos上。

1. 执行./ConsoleApp3,可以运行

2. 执行 dotnet ConsoleApp3 或者 dotnet run ConsoleApp3 都不行,提示:

No executable found matching command "dotnet-ConsoleApp3"

难道只能用1的方法运行? 2的方法不行吗?

 

SSH上dotnet --help 可用,说明SDK安装的没问题

萨尔 | 园豆:20 (初学一级) | 2017-11-01 17:29

@萨尔: 

找到原因了,应该运行 dotnet ConsoleApp3.dll的 。

./ConsoleApp3 是没装sdk的运行方法。

dotnet ConsoleApp3.dll 是使用命令运行的方法。 要带上 .dll 后缀。

萨尔 | 园豆:20 (初学一级) | 2017-11-01 17:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册