1. 程式人生 > >如何使用VS Code在.Net Core 2.0中新增專案並引用本地包

如何使用VS Code在.Net Core 2.0中新增專案並引用本地包

廢話後面再說,先將操作步驟貼出來。

第一步,開啟VS Code,使用快捷鍵“Ctrl + `”開啟終端,或者在選單欄的“檢視”選單中找到“整合終端”並點選。在開啟的終端視窗中輸入一下命令定位到儲存程式的目錄,並新建資料夾“LocalNupkgRefExample”,資料夾名稱自己定義。如下圖所示。

命令說明:

cd 引數:DOS命令,定位到引數中指定的資料夾

mkdir 引數:DOS命令,在當前目錄建立資料夾,名稱由引數指定。如果引數中指定了路徑,那麼會在指定的位置建立資料夾,例如 mkdir ../Test,會在上一級目錄建立Test文資料夾。

為了方便管理檔案,我們可以在VS Code中開啟剛才建立的資料夾(“檔案”選單下的“開啟資料夾”項),然後通過VS Code的資源管理器管理裡面的檔案,這裡不再多說,這些操作自己可以向玩新手機一樣自己嘗試一下。

注意:本示例是用.Net Core 2.0做的,如果你的電腦上沒有安裝,請先下載並安裝。安裝後其實只要使用記事本和控制檯也可以編寫本示例。

第二步,使用dotnet new命令新增一個空專案,命名為“LocalNupkgLib”,用來作為被引用的本地包(現在叫做“包”並不合適,因為這只是編寫時管理程式的專案,還沒有打包)。如下圖所示。執行命令後會在當前目錄“LocalNupkgRefExample”下建立一個資料夾“LocalNupkgLib”,並在裡面建立名稱為LocalNupkgLib的專案檔案,以及一個名稱為Class1的類檔案。

命令說明:

dotnet new 模板 -n 名稱:在使用.net core命令時需要使用dotnet命令提示符,new命令用於表明新增新檔案, 模板用於指出檔案型別,-n指示該檔名稱由後面的引數“名稱”指定。截圖中模板為classlib,表示建立類庫。如果不使用-n指定檔名稱,會預設以當前資料夾的名稱為檔名稱。

可以使用 dotnet new或dotnet new -h或者dotnet new --help來檢視new命令可以建立哪些檔案型別。

第三步,在資源管理器中修改Class1的名稱為MyClassLib(刪除這個類檔案再新增新的也可以),修改類名稱為MyClassLib,並在裡面新增一個屬性Message,用於在其他專案中使用。

第四步,將剛才的專案打包。使用命令pack將專案打包到指定位置。

命令說明:

pack 專案名稱 -o 目標位置:專案名稱就是在之前建立的專案LocaNupkgLib.csproj的名稱LocalNupkgLib,-o後面輸入要將包放在哪個位置,如果不指明位置,預設會打包到要打包的專案的生成檔案中,即Debug資料夾裡面。這裡為了便於其他專案引用,將位置放在了與該專案同級的資料夾LocalNupkgRefExample下。

如果打包時專案名稱寫上了副檔名,那麼就需要在執行命令時寫上專案目錄,如下圖所示,當前命令所在的目錄是LocalNupkgRefExample,而專案檔案LocakNupkgLib是在子資料夾LocalNupkgLib中,所以直接執行命令dotnet pack LocalNupkgLib.csproj -o ..\mypack就發生報錯,提示找不到專案檔案,而不上子資料夾後就可以正常打包了。

個人猜想在不寫專案副檔名時,系統認為專案是在所提供的資料夾LocalNupkgLib中,會在這個資料夾中查詢專案檔案,名稱不一樣也沒關係(這一點還沒驗證)。

打包後可以在資源管理器中看到剛才生成的資料夾mypacks,裡面包含一個包檔案LocalNupkgLib.1.0.0.nupkg。

如果需要了解詳細的打包命令,可以使用dotnet pack -h來檢視。

第四步,新增控制檯專案,用於引用剛才生成的包。

使用命令dotnet new console -n LocalNupkgApp新增一個控制檯專案。這一個和新增類庫的命令類似,只是將classlib改為了console。其他不再做說明。

在資源管理器中展開LocalNupkgApp資料夾,可以看到裡面有一個專案檔案LocalNupkgApp.csproj。開啟Program.cs類檔案,我們在裡面呼叫一下在上一個專案中新增的類庫LocalNupkgLib中的方法。如下圖所示。這裡因為還沒有引用打包好的包檔案,所以不會有智慧提示。

可以使用命令 dotnet new或者dotnet new -h來檢視可以生成哪些型別的問題。

第五步,生成一下這個控制檯專案,看看會發生什麼。

使用命令dotnet build LocalNupkgApp後發生了報錯,如下圖所示,這個報錯提示Program.cs中應該輸入“;”。檢查後發現上面修改的Program.cs中缺少了一個分號,新增後儲存。

重新執行命令,發生了另外一個報錯:缺少引用。是不是和Visual Studio中發生的問題一樣?接下來就是要解決這個引用的問題了。

第六步,在控制檯專案中新增本地引用。

執行命令dotnet add LocalNupkgApp package LocalNupkgLib。執行後發生報錯,提示找不到這個包。注意錯誤提示,是到一個網站上查詢的,而不是本地我們指定的那個位置mypacks。

為了讓系統知道從哪裡找我們的包檔案,我們需要修改一個控制檯專案的專案檔案LocalNupkgApp.csproj.

如下圖所示,開啟LocalNupkgApp.csproj檔案,在PropertyGroup中新增元素<RestoreSources>..\mypacks</RestoreSources>,“..\mypacks”即是我們指定的包位置,因為mypacks資料夾位於控制檯專案資料夾的上一級,所以需要使用“..”來確定相對路徑。

再次執行包引用命令。可以看到已經沒有報錯,並且顯示新增上了包。這時在檢視LocalNupkgApp.csproj檔案可以看到裡面已經添加了一個元素<PackageReference>。當然這個元素我們也可以手動新增到專案檔案中,而不用命令列。

第七步,重新生成專案。已經沒有報錯了。

第八步,執行專案。可以看到已經顯示了我們新增的訊息。

執行專案使用run命令,注意要新增-p用來指定專案名稱。