Visual Studio for Mac 初體驗

来源:http://www.cnblogs.com/xishuai/archive/2017/05/12/visual-studio-for-mac.html
-Advertisement-
Play Games

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

參考資料:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 根據Linux系統以及公司網站系統的信息,選擇合適的安裝包進行安裝 ...
  • lineinfile模塊詳解 lineinfile模塊類似linux工具中的sed工具,但是網上的文章一般都只有簡單的實例,複雜點的例子都沒有 下麵是我根據實際操作總結出來的lineinfile模塊的常見例子,分享給大家參考 目錄 ansible-doc lineinfile官方文檔(英文)--看不 ...
  • 通過ssh實現遠程登陸前提是伺服器已經開啟ssh服務,至於怎麼開啟,可以參看上一篇“Linux伺服器開啟ssh服務,實現ssh遠程登陸!”! 使用ssh登陸時,輸入主機(linux的ip地址),賬號,密碼登陸! 1.點擊“文件”,“連接” 2.點擊此處“新建會話” 3.輸入主機ip和用戶名 4.一直 ...
  • 腳本介紹: 1,監控 /home/www/ 目錄改動,並將改動的文件rsync到/home/www3目錄 2,監控方法為監控文件的md5值,如果md5值與上次不同,即發生改變 如有問題,請聯繫:410018348 本文出自 “運維人生” 博客,請務必保留此出處http://yaozb.blog.51 ...
  • 首先大部分的動態壁紙都是收費的或者是已經固定的,其實這一款也是固定的 但是這個固定的是可以進行修改的 第一先在App Store下載 LiveDesktop Pro 這一款是免費的 然後下載後進行打開會是這種這幾款是預設的 打開應用程式找到LiveDesktop Pro 顯示包內容然後進去 在進Co ...
  • 最近在學linux,使用ssh遠程登陸linux,記錄下來! 首先進入/etc目錄下,/etc目錄存放的是一些配置文件,比如passwd等配置文件,要想使用ssh遠程登陸,需要配置/etc/ssh/sshd_config文件里的配置信息,使用vim編輯,在命令行模式下輸入 vim /etc/ssh/ ...
  • 這是grid表格裡使用lookup,普通文本只需使用controltemplate里的東西 ...
  • 1.在FileUpload控制項添加一個屬性 webkitdirectory=""就可以上傳文件夾了 2.檢測文件夾下所有子文件 string DirectoryName = FileUpload1.PostedFile.FileName; string path = Server.MapPath("... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...