在有的特有的專案環境下,團隊會將所有的專案使用同一個解決方案進行管理。這種方式方面了管理,但是卻會導致解決方案變得非常龐大,導致載入時間過長。那麼,如何部分載入解決方案中的部分專案呢?就讓我們來借用微軟退出的 slngen 工具來體驗一下部分載入解決方案中的部分專案吧。
SlnGen 是一個 Visual Studio 解決方案檔案生成器。Visual Studio 解決方案對於大型專案樹來說通常不能很好地擴充套件。SlnGen 讀取一個給定專案的專案參照,按需建立一個 Visual Studio 解決方案。例如,你可以針對一個單元測試專案執行 SlnGen,並呈現一個包含單元測試專案及其所有專案參照的 Visual Studio 解決方案。你也可以針對一個有根的資料夾中的遍歷專案執行 SlnGen,開啟一個包含你的專案樹的那個檢視的 Visual Studio 解決方案。
dotnet tool install --global Microsoft.VisualStudio.SlnGen.Tool --add-source https://api.nuget.org/v3/index.json --ignore-failed-sources
執行以上命令,你就可以在全域性安裝 slngen 工具了。然後,你就可以在任何地方使用 slngen 命令了。
slngen --help
最近我們正在組織全新的技術交流方式,歡迎點選連結蒞臨指導 https://www.newbe.pro/links/
在你的專案樹中,你需要為所有的專案引入 Microsoft.VisualStudio.SlnGen 包。可以通過 Directory.Build.props 來輕鬆實現。
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.SlnGen" Version="9.5.2" />
</ItemGroup>
為了方便演示,我們建立三個專案,分別是 slngen-demo、slngen-demo-a、slngen-demo-b。
其中,slngen-demo-a 和 slngen-demo-b 專案都參照了 slngen-demo 專案。
mkdir slngen-demo
cd slngen-demo
dotnet new classlib -o slngen-demo
dotnet new console -o slngen-demo-a
dotnet new console -o slngen-demo-b
cd slngen-demo-a
dotnet add reference ../slngen-demo/slngen-demo.csproj
cd ../slngen-demo-b
dotnet add reference ../slngen-demo/slngen-demo.csproj
資料夾結構大致如下:
C:\REPOS\SLNGEN-DEMO
│ Directory.Build.props
│
├─slngen-demo
│ │ Class1.cs
│ │ slngen-demo.csproj
│ │
│ ├─bin
│ └─obj
│
├─slngen-demo-a
│ │ Program.cs
│ │ slngen-demo-a.csproj
│ │
│ ├─bin
│ └─obj
│
└─slngen-demo-b
│ Program.cs
│ slngen-demo-b.csproj
└─obj
注意 slngen 是通過驅動 Visual Studio 來生成解決方案的。因此需要在命令列中具備 MSBuild.exe 的路徑。
因此我們需要使用 Developer Command Prompt for VS 2022
來執行 slngen 命令。
我們來使用 slngen 載入 slngen-demo-a 專案。
slngen slngen-demo-a/slngen-demo-a.csproj
通過以上命令,我們就使用 slngen 載入了 slngen-demo-a 專案。
這種方式可以載入 slngen-demo-a 專案和 slngen-demo,但是 slngen-demo-b 專案並沒有被載入。
執行結果大致如下:
C:\Repos\slngen-demo>slngen slngen-demo-a/slngen-demo-a.csproj
SlnGen version 9.5.2+b19739dfbc for .NET Framework
Copyright (c) Microsoft Corporation. Licensed under the MIT license.
Build started 2/9/2023 8:29:24 PM.
Generating solution for project "C:\Repos\slngen-demo\slngen-demo-a\slngen-demo-a.csproj"
Loading project references...
Loaded 2 project(s) in 840ms
Generating Visual Studio solution "C:\Repos\slngen-demo\slngen-demo-a\slngen-demo-a.sln" ...
Updating existing solution file and reusing Visual Studio cache
Launching Visual Studio...
Success
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:01.33
通過 slngen,我們可以很方便地載入一個專案及其所有的專案參照。這對於我們在 Visual Studio 中開啟一個專案樹的檢視非常有用。可惜 Rider 不得行。
感謝您的閱讀,如果您覺得本文有用,請點贊、關注和轉發。最近我們正在組織全新的技術交流方式,歡迎點選連結蒞臨指導 https://www.newbe.pro/links/