首页 > 代码库 > vs2017的 .net core 在Ubuntu16.04上的风雨历程

vs2017的 .net core 在Ubuntu16.04上的风雨历程

2017年3月7日,vs2017正式发布,里面的。net core为v1.1.1版本。跨平台,为了实现这个伟大的目标,在漫长的过程中,狼狈的被坑了又坑。。。终于,哈哈,成功了。

共享一下,那些坑吧。

 

1. vmware 12.5

开始,用的vmware11,安装的是Ubuntu14.04。 

第一个坑:Ubuntu我装的是32位的。。。。同志们啊,.net core只能装在64位上的。 开始不知道,就用http://www.microsoft.com/net/core#linuxubuntu上的教法,一遍遍的装啊装,一边还骂Linux下载慢。后来急了,想弄个vpn。。。就是装不上,后来啊。。。开窍了,发现32位Linux是装不上的。

注意,Ubuntu一定要装64位的,建议用16.04(不知道多少位的?  sudo uname --m  一下,如果返回i686,恭喜你,是32位的,和我一样需要重装。

 

第二个坑:vmware中的Ubuntu16.04不能共享文件夹。

下个vmware12.5吧,哦,其它版本也能共享? 呵呵,请看下一个坑。如果和我一样坑坑了,就这样办:

1)vmware12.5启动后,再启动Ubuntu16.04虚拟机。

2)vmware的右下方有两个光驱图标,单击右侧那个,选择加载vmware安装路径下的linux.iso,注意,是vmware在win7下的安装路径哦(呵呵,我用的是win7,win10也一样吧)

3)在Ubuntu里面打开光盘,会发现里面有个vmware-tools的压缩包,双击,解压到home目录下(这个目录有操作权限哦),找到里面一个vmware-install.pl的文件,终端里面运行一下,OK了。 vmware11的版本,也这么试过,是无法共享的。里面的linux.iso在Ubuntu16.04下,感觉不完整。。。。是我的人品??  悲催了,我的鹅。

4)vmware的虚拟机中,右击ubuntu16.04,会找到共享文件夹功能,设一下,ok了。

 

第三个坑:VS2017下建一个net core控制台程序,生成的是一个dll?

哎呀,这个坑怎么让俺想到母鸡生出鸭子呢?话说,俺刚看到的时候,傻了,一下了颠覆了俺十多年的开发观。那么,vs2017里面,可以F5运行,没有Vs2017可怎么办?

嘿嘿,俺把dll后缀改成exe了。。。。x x x,双击运行后,天打五雷轰,那堆异常叫壮个观。不行的拉。 后来找了MS说明书,人家说,net core吧,是个跨平台的东东,这个是上档次的,不像以前的猫啊狗的,双击就行,现在要有骑士风度,要用终端,win7下要这么用:运行-> cmd    dotnet d:\mydir\myfile.dll 回车。

 

第四个坑:Ubuntu16.04 怎么装net core?

这个。。。linux下,下载个东东,费老劲了,又是老外的网址,又是大家伙,动不动上百M。。。俺就想,照ms的教程(http://www.microsoft.com/net/core#linuxubuntu),sudo apt-get update 要猴年马月。。。呵呵,这个地址里面有个好东东,里面有个连接,all Linux downloads

可以先用浏览器下下来,再手工安装一下,多好啊。 呵呵,我就这么干了,在ubuntu里面,下了一个sdk,然后,解压到home目录下,然后。。。找到一篇手工安装core的文章,按他的说法,先在/usr/share下建一个目录:dotnet,再把解压的所有文件拷贝到 /usr/share/dotnet目录下,然后 ln -i /usr/share/dotnet/dotnet /usr/bin

就是在/usr/bin下建一个连接,就ok了。 测试一下,在终端下,输入:dotnet run 回车,显示:welcome 。net core! 呵呵,美啊。 然后。。。。然后,输入:

dotnet /mnt/hgfs/mydir/myfile.dll   轰隆隆。。。。雷来了,一堆的err,什么没有 system namespace。。。那么多的错误,看到让你怀疑是不是俺的代码写错啦?

错了,手工安装net core sdk 装的有问题。  错在哪? 对不起,俺没深入研究,费功夫啊。 怎么办? ms的教程,还是要老老实实的搞啊。

1)步:sudo sh -c ‘echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list‘

2)步:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893

3)步:sudo apt-get update

update 很慢,很慢,没关系,即使你关了vmware,下次进入ubuntu,还可以直接调用 sudo apt-get update.

坑来了:update失败了。 咳嗽一声,喂,喂,同志们注意了啊,这个,关于Update失败的事吧哈,我知道有两种情况哈,这个网络不通是不算的哈。哎,这个谁扔的鸡蛋,这么不珍惜粮食。。。。 一种是,你的Unbuntu是32位的,上面提到了,重装个64位的再试。 一种是,浏览器能访问update失败中的网址,那么,update为什么会失败呢?

没道理啊。因为,你有防火墙。浏览器的端口是正常通行的,sudo apt-get update 用的是哪个端口? 没研究,肯定不是80,呵呵,win7下把操作系统的防火墙关闭掉,OK了。

4)步:sudo apt-get install dotnet-dev-1.0.1

这个,你要有足够。。足够。。。的耐心,可以反复的装,在你崩溃前,恭喜你,成功了。

敲入:

dotnet run 测试一把。

dotnet /mnt/hgfs/mydir/myfile.dll    哈哈。。。。你成功了。

 

vs2017的 .net core 在Ubuntu16.04上的风雨历程