Visual Studio for Mac 初体验
你喜爱的 IDE,现在可用于 Mac
来自:https://www.visualstudio.com/zh-hans/vs/visual-studio-mac/
惊不惊喜?意不意外?惊喜但不意外,因为在 Visual Studio for Mac 之前,已经有了 Visual Studio Code for Mac,那时候我们还以为 Visual Studio Code 就是 Visual Studio 的跨平台版本,但事实微软并不是这样想的,Visual Studio Code 相对于 Visual Studio 还是太简化了,企业级的应用开发 Visual Studio Code 还是有些力不从心,所以 Visual Studio for Mac 诞生了,以后说不准还会有 Visual Studio for Linux 等等。
Mac 电脑中进行 .NET 开发,我自己现在的情况是装 VMware Fusion,然后在虚拟机里面装 Windows 10,Windows 10 里面装 Visual Studio 2017,当然,Windows 10 只装 .NET 软件开发类的程序,如果你想在 Windows 10 里面装微信或者 QQ,那么建议你直接把 Mac 系统改为 Windows 10,我的原则是 Windows 10 只写代码,其他事在 Mac 上完成,但即便如此,只要虚拟机一开,然后再开两个 Visual Studio 2017,Mac 散热风扇就一直“嗡嗡嗡”的转,即使虚拟机内存分 8G,CPU 4个核心,也无济于事。
当然,如果 .NET 开发程序比较简单,或者是纯代码型的项目,就没必要去装虚拟机了,用 Visual Studio Code for Mac 或者其他编辑器就可以了。
当然,如果 Mac 能完整的进行 .NET 开发,就完美了,所以,赶快去装 Visual Studio for Mac 吧,啦啦啦~
安装步骤如下:



注:如果出现上面“无法连接到网络”错误,需要网络越墙下。


注:上面需要选择下安装的内容,全部安装的话需要 4.31G,如果不选择移动开发,只选择 .NET Core,只需要 897MB(我选的这个)

注:我选择安装内容之后,点击“安装”就突然卡死了,然后退出程序重新安装,就出现了上面的错误,我以为安装不了了,最后再安装一次的时候,又突然可以了,很奇怪,如果你遇到一些错误,就多安装几次就好了。


注:如果安装出现上面的错误,点击下“重试”,如果还是不行的话,就再点一次。

安装好之后,我们用实际项目 IdentityServer4.Demo 来测试 Visual Studio for Mac 是否可用?使用体验如何?能否进行企业级开发?
首先,用 Visual Studio for Mac 打开IdentityServer4.Demo.sln解决方案,发现打不开,报下面的错误:

报错信息:找不到.xproj类型的项目文件。
然后去项目文件夹中去找.xproj类型的项目文件,没找到,只有.csproj类型的项目文件:

然后用记事本打开IdentityServer4.Demo.sln解决方案:
...
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{22BD0651-0313-496F-865B-9D6D94CB9407}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{3FDA3CFF-E411-4166-A98C-42E1E5B252E3}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ClientCredentialsAndPassword.Web", "ClientCredentialsAndPassword.Web\ClientCredentialsAndPassword.Web.xproj", "{6BB34F8C-B0D7-4128-8DB9-9494591C0F94}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "APISource.Web", "APISource.Web\APISource.Web.xproj", "{F4980DEB-57D3-4C7F-ADBF-7A9F01ED94B8}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ClientCredentialsAndPassword.Web.Tests", "ClientCredentialsAndPassword.Web.Tests\ClientCredentialsAndPassword.Web.Tests.xproj", "{6BB31592-9DC2-4BE7-8E77-8ECED21040F4}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ImplicitServer.Web", "ImplicitServer.Web\ImplicitServer.Web.xproj", "{118DE163-7D76-488F-BB99-F494101898D1}"
EndProject
...
IdentityServer4.Demo.sln解决方案文件里面,都是.xproj类型的文件。
IdentityServer4.Demo.sln解决方案是可以用 Visual Studio 2017 打开的,但为什么 Visual Studio for Mac 打不开?什么原因呢?还有就是,为什么IdentityServer4.Demo.sln解决方案里的文件类型和实际的文件类型不一致?
原因得从 IdentityServer4.Demo 项目的创建说起,IdentityServer4.Demo 用 Visual Studio 2015 创建的 .NET Core 项目,那时候项目程序包管理使用project.json文件,项目文件是.xproj,后来我装了 Visual Studio 2017,然后项目自动升级了下,project.json/.xproj变成了.csproj,微软把所有的项目文件扩展名改为了.csproj(详见:.NET Core 计划弃用 project.json),但并没有把解决方案文件中的.xproj改为.csproj,而只是让 Visual Studio 2017 做了兼容处理(为什么不全部更换掉?有点坑~)。
Visual Studio for Mac 不能像 Visual Studio 2017 那样做兼容处理,那怎么办呢?我们只能手动把IdentityServer4.Demo.sln解决方案文件中的.xproj改为.csproj了。
使用 Visual Studio for Mac 再次打开IdentityServer4.Demo.sln解决方案,经过一段时间的nuget restore后,就可以了:

在每个项目旁边有个“感叹号”(截图截不到),提示信息:
Project not built in active configuration
原因是没有安装最新版本的 .NET Core SDK,重新安装最新的版本就可以了。
参考资料:Project not build in active configuration Visual Studio MacOS .net Core
突然发现,很早之前就有了 Visual Studio for Mac,只不过那时叫 Visual Studio MacOS,而且是测试版,我以为今天才有的 Visual Studio for Mac 的,看来真是孤陋寡闻了。
重新编译整个解决方案,发现有错误(IdentityServer4.Demo 是成功的,但我试了其他项目失败,为了演示,代码是我手动添加的):

错误详情:
/Library/Frameworks/Mono.framework/Versions/5.0.0/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Sdk.DefaultItems.targets(5,5): Error: 包含了重复的“Content”项。.NET SDK 默认情况下包括你项目中的“Content”项。可以从项目文件中删除这些项,或者如果希望将其显示包含在项目文件中,则可以将“EnableDefaultContentItems”属性设置为“false”。重复项为: 'Properties/launchSettings.json' (ImplicitServer.Web.Tests)
从上面可以看出错误原因,.NET SDK 默认包含Content项,我们就可以把.csproj文件中的Content包含项去除,去除如下:
<ItemGroup>
<Content Include="Properties\launchSettings.json" />
</ItemGroup>
重新编译解决方案,Build Successful:

然后右击项目选择“Run Item”,或者在菜单栏选择“Run - Restart Without Debugging”,就可以启动项目了。

调试项目也很简单,菜单栏选择“Run - Restart Debugging”,可以设断点调试:

另外,在 Visual Studio for Mac 中写代码还是很舒服的,和 Visual Studio 2017 差别并不是很大,智能提示很完善,甚至有些快捷键也支持了,比如输入if后按Tab键出来扩展代码。
Visual Studio for Mac 设置 Nuget Source:

从当前项目目录中,打开 Mac 终端命令:

Visual Studio for Mac 也有不太好的体验,比如:
- 一些图标太小,很难看清(比如
git项目或文件变动图标,上面一些截图中是有的,但很难发现,还有一些工具图标等) - 一些按钮和 Tab 切换的体验很差,很生硬的感觉,但能使用就好,可以后面优化。
- 兼容性不好,比如上面说的那个错误,IdentityServer4.Demo 项目使用没问题,但我试过一些实际工作项目,打开和使用还是有些问题。
- 单元测试项目没办法打开(xUnit),如下图。

大概就这些吧,可能还有一些问题没有发现,但我觉得 Visual Studio for Mac 是可以真正用于开发的(企业开发,不是自己搞着玩),毕竟在 Mac 下进行 .NET Core 开发还是蛮爽的,不过微软在这一版 Visual Studio for Mac 上,主要做的是移动开发(宣传文章和安装选项中可以看到), .NET Core 服务的开发可能会有一些问题,但后面肯定会进行完善的,大家可以先用起来了,只是踩坑问题。
参考资料:
- Build 2017 微软推一系列新工具和服务 让你打造更智能的应用程序
- Visual Studio for Mac Tour
- Visual Studio 2017 新版发布:更强大!
- 微软正式发布 Visual Studio for Mac
- 微软发布 .NET Core 2.0 Preview 1
Visual Studio for Mac 初体验的更多相关文章
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Xamarin+Prism开发详解三:Visual studio 2017 RC初体验
Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...
- 在【Xamarin+Prism开发详解三:Visual studio 2017 RC初体验】中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很是感兴趣。于是发时间深入研究了一下Visual Studio 2017RC 是不是和微软Connect()://2016上说得一样神。
总共列出了12点,耐心点慢慢看! 1,添加了不少[代码样式]的设置项目. 通过合理的设置每个人都能写出优美的代码,而且团队项目也可以达到统一代码风格. this首选项:可以设置[字段,属性,方法,事件 ...
- Visual Studio for Mac
Visual Studio for Mac 初体验 你喜爱的 IDE,现在可用于 Mac 来自:https://www.visualstudio.com/zh-hans/vs/visual-stu ...
- visual studio for mac的安装初体验
微软2016 Connect 大会发布了visuo studio for mac的pre版本,由于工作原因,现在工作环境是mac,虽然开发现在是在用python,但一直关注着.net的发展,于是自己很 ...
- Visual Studio for Mac 简介
2016-12-13 Hutchinson 微软中国MSDN 在 11 月举行的 Connect(); 上,Microsoft 将推出 Visual Studio for Mac 预览版.这是一个激动 ...
- Visual Studio for mac从入门到放弃1
MAC 第一步:从微软官网下载:https://www.visualstudio.com/vs/visual-studio-mac/ 第二步:安装软件过程出现 It was not possible ...
- 解决 Visual Studio For Mac 还原包失败问题
体验了一把改名部最新的杰作,总体感觉挺好,也能看出微软在跨平台这方面所做出的努力. 可能是预览版的缘故,还是遇到一个比较大的问题,创建netcore项目后,依赖包还原失败,错误信息如下: 可以先试着手 ...
- Visual Studio for Mac Preview离线下载安装
Visual Studio for Mac离线下载安装. 环境:OS X EI Caption 10.11.2 .NET Core SDK 1.1 需预先安装 .NET Core 1.1 SDK ma ...
随机推荐
- CDMA sid, nid, bid 含义解释
copyright@ celldb.cc SID 是系统识别码,每个地级市只有一个sid,是唯一的. NID是网络识别码,由各本地网管理,也就是由地级分公司分配.每个地级市可能有1到3个nid. BI ...
- 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
问题描述: 一次强制关机后出现了这个对话框,注销.重启均无法解决问题 解决过程[因为我用的英文版操作系统,所以截图都是英文,请大家自行对照自己的操作系统]: 1.ctrl+alt+del 打开任务管理 ...
- Hadoop2.7.3分布式集群安装
一.依赖文件安装 1.1 JDK 参见博文:http://www.cnblogs.com/liugh/p/6623530.html 二.文件准备 2.1 文件名称 hadoop-2.7.3.tar.g ...
- jenkins+SVN配置
开发项目,版本控制必不可少,我用的版本控制软件为SVN,那么如何把jenkins和SVN结合,使得SVN源码一有上传更新,jenkins就马上构建项目呢?下面说一下配置过程 1) ...
- web console实现
一.效果图 二.实现 web console是基于websocket实现的. 以上做的效果嵌入项目中,因为项目本身是angular1的项目,所以console整体封装成一个angualr modul ...
- 动态代理的两种实现方式(JDK/Cglib)
=========================================== 原文链接: 动态代理的两种实现方式(JDK/Cglib) 转载请注明出处! ================== ...
- 神奇的框架插件jquery layer
layer 的这个相册功能是不是很炫酷,是滴,这就是layer,只要添加一个layerjs就行了 //Javascript代码 layer.photos({ photos: '#photosDemo' ...
- get_category_recommend_goods的正确使用
get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0, $max = 0, $ext='') 位于lib_ ...
- 老李分享:https协议
老李分享:https协议 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏 ...
- 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具
性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...