Visual Studio for 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 吧,啦啦啦~

安裝步驟如下:

435188-20170511193131332-1393390698.png

435188-20170511193201051-1238770954.png

435188-20170511193253988-770377922.png

注:如果出現上面“無法連接到網絡”錯誤,需要網絡越牆下。

435188-20170511193201051-1238770954.png

435188-20170511193744457-2121839568.png

注:上面需要選擇下安裝的內容,全部安裝的話需要 4.31G,如果不選擇移動開發,只選擇 .NET Core,只需要 897MB(我選的這個)

435188-20170511193820707-714507866.png

注:我選擇安裝內容之後,點擊“安裝”就突然卡死了,然後退出程序重新安裝,就出現了上面的錯誤,我以爲安裝不了了,最後再安裝一次的時候,又突然可以了,很奇怪,如果你遇到一些錯誤,就多安裝幾次就好了。

435188-20170511194122863-1980562943.png

435188-20170511194140316-1755135457.png

注:如果安裝出現上面的錯誤,點擊下“重試”,如果還是不行的話,就再點一次。

435188-20170511194241644-556410149.png

安裝好之後,我們用實際項目 IdentityServer4.Demo 來測試 Visual Studio for Mac 是否可用?使用體驗如何?能否進行企業級開發?

首先,用 Visual Studio for Mac 打開IdentityServer4.Demo.sln解決方案,發現打不開,報下面的錯誤:

435188-20170511195121301-1383916834.png

報錯信息:找不到.xproj類型的項目文件。

然後去項目文件夾中去找.xproj類型的項目文件,沒找到,只有.csproj類型的項目文件:

435188-20170511195542160-1142658142.png

然後用記事本打開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後,就可以了:

435188-20170511203307222-373589230.png

在每個項目旁邊有個“感嘆號”(截圖截不到),提示信息:

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 是成功的,但我試了其他項目失敗,爲了演示,代碼是我手動添加的):

435188-20170511212208191-677357201.png

錯誤詳情:

/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:

435188-20170511212934551-1969937321.png

然後右擊項目選擇“Run Item”,或者在菜單欄選擇“Run - Restart Without Debugging”,就可以啓動項目了。

435188-20170511214010535-1120080561.png

調試項目也很簡單,菜單欄選擇“Run - Restart Debugging”,可以設斷點調試:

435188-20170511214235660-121053580.png

另外,在 Visual Studio for Mac 中寫代碼還是很舒服的,和 Visual Studio 2017 差別並不是很大,智能提示很完善,甚至有些快捷鍵也支持了,比如輸入if後按Tab鍵出來擴展代碼。

Visual Studio for Mac 設置 Nuget Source:

435188-20170511222830738-1821677212.png

從當前項目目錄中,打開 Mac 終端命令:

435188-20170511215045988-958582079.png

Visual Studio for Mac 也有不太好的體驗,比如:

  • 一些圖標太小,很難看清(比如git項目或文件變動圖標,上面一些截圖中是有的,但很難發現,還有一些工具圖標等)

  • 一些按鈕和 Tab 切換的體驗很差,很生硬的感覺,但能使用就好,可以後面優化。

  • 兼容性不好,比如上面說的那個錯誤,IdentityServer4.Demo 項目使用沒問題,但我試過一些實際工作項目,打開和使用還是有些問題。

  • 單元測試項目沒辦法打開(xUnit),如下圖。

435188-20170511215320879-249782435.png

大概就這些吧,可能還有一些問題沒有發現,但我覺得 Visual Studio for Mac 是可以真正用於開發的(企業開發,不是自己搞着玩),畢竟在 Mac 下進行 .NET Core 開發還是蠻爽的,不過微軟在這一版 Visual Studio for Mac 上,主要做的是移動開發(宣傳文章和安裝選項中可以看到), .NET Core 服務的開發可能會有一些問題,但後面肯定會進行完善的,大家可以先用起來了,只是踩坑問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章