你喜愛的 IDE,現在可用於 Mac 來自:https://www.visualstudio.com/zh hans/vs/visual studio mac/ 驚不驚喜?意不意外?驚喜但不意外,因為在 Visual Studio for Mac 之前,已經有了 Visual Studio Code ...
你喜愛的 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