AvaloniaUI專案離線開發全攻略:IDE安裝、範本應用與NuGet私有化部署一站式解決

AvaloniaUI專案離線開發全攻略:IDE安裝、範本應用與NuGet私有化部署一站式解決

本文將指導您如何在本地網路環境中成功安裝並設定AvaloniaUI所需的工具和範本。

最後更新 2024/6/28 下午10:26
沙漠尽头的狼
預計閱讀 6 分鐘
分類
Avalonia UI
標籤
.NET C# Avalonia UI NuGet

1. 引言

在網路受限或完全離線的環境中開發 .NET 專案(本文範例為 Avalonia UI 專案),可能會遇到一些挑戰。本文將為您提供一套完整的離線開發解決方案,包括 IDE 的安裝、Avalonia UI 範本的配置、私有化 NuGet 服務的部署以及 NuGet 套件的製作和上傳等。

2. IDE 安裝指南

Visual Studio 2022 安裝

Visual Studio 2022 是微軟推出的最新 IDE,支援 Avalonia UI 專案的開發。以下是詳細的離線安裝步驟:

  • 離線安裝包製作:首先,根據網友 VS2022 離線安裝包 的指南,製作 Visual Studio 2022 的離線安裝包。
  • Avalonia UI 擴充功能安裝:安裝 Visual Studio 後,透過 Visual Studio Marketplace 下載並安裝 Avalonia for Visual Studio 2022 擴充功能。

  • 安裝過程中遇到失敗

根據微信群內 @rabbitism 的解答(感謝 @daidai_cn 的協助),我們可以透過解壓該擴充功能檔案,刪除下圖框選的 Extension.vsext 檔案後再進行安裝:

正常安裝了:

JetBrains Rider 安裝

JetBrains Rider IDE 在 2020.3 版本中開始內建支援 Avalonia XAML,包括對 Avalonia 特定 XAML 功能和自訂程式碼檢查的一流支援。

離線安裝包下載地址:下載 Rider:跨平台 .NET IDE (jetbrains.com)

3. 安裝 Avalonia UI 範本

線上安裝請參考文件 Avalonia Docs,離線安裝請點選 Avalonia.Templates 下載:

安裝方式同上圖 .NET CLI 命令指令碼:

dotnet new install avalonia.templates.11.0.10.1.nupkg

現在,無論是在 Visual Studio 還是 JetBrains Rider 中,您都可以使用 Avalonia UI 範本來建立新專案了。

VS 2022 中 Avalonia UI 範本:

Rider 中使用範本:

4. 私有化部署 NuGet 服務

建立好專案後,程式也是無法正常執行的,預設範本依賴 Avalonia UI 的一些 NuGet 套件,需要線上安裝,可以直接把相關函式庫複製到內網,但一個一個複製、引用還是很麻煩。

為了方便團隊內部成員之間共享和管理 NuGet 套件,您可以考慮部署私有 NuGet 服務。本文推薦使用 BaGet 作為輕量級的 NuGet 伺服器,參考該 BaGet 專案說明

  1. 安裝 .NET Core 3.1 SDK,該程式能支援的 .NET 最新版本,有興趣可以 Clone 修改成 .NET 8\9(PR 中有驚喜,網友有 PR 升級分支);
  2. 下載最新版的 Release 壓縮包 Releases · loic-sharma/BaGet
  3. 執行服務 dotnet BaGet.dll
  4. 瀏覽器開啟 http://localhost:5000 存取:

OK,這就算部署完成了。

5. NuGet 套件製作(可略)

網上教學較多,可簡單設定函式庫的專案檔支援 NuGet 套件產生,參考 CodeWF.EventBus

<Project>
	<PropertyGroup>
		<Company>https://codewf.com</Company>
		<Authors>沙漠盡頭的狼</Authors>
		<Owners>https://codewf.com</Owners>
		<AssemblyVersion>$(Version)</AssemblyVersion>
		<FileVersion>$(Version)</FileVersion>
		<Version>$(Version)</Version>
		<Description>透過 CodeWF.EventBus 提供的 事件匯流排,我們可以很輕鬆的實現 CQRS 模式。根據業務需求,我們可以建立並維護讀模型,將讀操作和寫操作進行分離,從而提高應用程式的可擴充性和效能。可在各種範本專案使用:WPF、Winform、AvaloniaUI、ASP.NET Core 等。The CodeWF.EventBus allows us to easily implement the CQRS mode. According to business requirements, we can create and maintain a read model to separate read and write operations, thereby improving the scalability and performance of the application. Can be used in various template projects: WPF, Winform, AvaloniaUI, ASP. NET Core, etc.</Description>
		<ApplicationIcon>Resources\logo.ico</ApplicationIcon>
		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
		<Title>$(AssemblyName)</Title>
		<Copyright>Copyright © https://codewf.com 2024</Copyright>
		<AssemblyName>$(AssemblyName)</AssemblyName>
		<RootNamespace>$(AssemblyName)</RootNamespace>
		<PackageId>$(AssemblyName)</PackageId>
		<PackageTags>C# EventBus; WPF; Winform; AvaloniaUI,ASP.NET Core;</PackageTags>
		<PackageIcon>logo.png</PackageIcon>
		<PackageProjectUrl>https://github.com/dotnet9/CodeWF.EventBus</PackageProjectUrl>
		<RepositoryUrl>https://github.com/dotnet9/CodeWF.EventBus</RepositoryUrl>
	</PropertyGroup>
	<ItemGroup>
		<None Include="Resources\logo.png">
			<Pack>True</Pack>
			<PackagePath>\</PackagePath>
		</None>
	</ItemGroup>
</Project>

產生函式庫專案時就會產生相應的 NuGet 檔案,這裡是已經發佈的 NuGet 套件位址:https://www.nuget.org/packages/CodeWF.EventBus

6. NuGet 套件上傳

可以上傳自己製作的 NuGet 套件,也可以上傳從 NuGet 官網 或第三方獲得的 NuGet 套件。

我們開啟自己部署的 NuGet 首頁 http://localhost:5000

點選 Upload a package,切換到 NuGet 套件上傳命令說明:

我們以 .NET CLI 上傳 NuGet 套件舉例,首先準備 NuGet 檔案,比如從 NuGet 官網搜尋 下載 Avalonia UI 的基礎套件:

下載好以後,在當前下載目錄開啟 CMD 命令列輸入:

dotnet nuget push -s http://localhost:5000/v3/index.json avalonia.11.1.0-rc1.nupkg

上面提示 NuGet 服務配置了金鑰,我們為了簡單,先停止 NuGet 服務,開啟它的設定檔 appsettings.json,清空 ApiKey 節點值,再執行 NuGet 服務:

再執行上傳命令,現在成功了:

NuGet 首頁也能搜尋到了:

7. IDE 配置 NuGet 來源

複製前面 NuGet 上傳頁面圖中紅色字體的 URL 位址:http://localhost:5000/v3/index.json,在 VS 中配置 NuGet 搜尋位址:

剩下的就和平時安裝套件一致了。

小知識:個人臨時開發可將上面的來源配置為本機 NuGet 目錄路徑。

8. 總結

本文介紹了如何在本機網路環境中成功安裝並配置 AvaloniaUI 所需的開發工具和範本,以及如何部署私有 NuGet 服務並製作及上傳 NuGet 套件,以便團隊內部成員之間共享和管理 NuGet 套件。

希望這些資訊能對您的 AvaloniaUI 專案開發有所幫助。如有其他問題,歡迎隨時向我提問。

繼續探索

延伸閱讀

更多文章