1. 程式人生 > >Visual Studio for Mac 初體驗

Visual Studio for Mac 初體驗

windows 虛擬機 軟件開發 linux 微軟

驚不驚喜?意不意外?驚喜但不意外,因為在 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 服務的開發可能會有一些問題,但後面肯定會進行完善的,大家可以先用起來了,只是踩坑問題。


Visual Studio for Mac 初體驗