共计 2825 个字符,预计需要花费 8 分钟才能阅读完成。
在有的特有的我的项目环境下,团队会将所有的我的项目应用同一个解决方案进行治理。这种形式方面了治理,然而却会导致解决方案变得十分宏大,导致加载工夫过长。那么,如何局部加载解决方案中的局部我的项目呢?就让咱们来借用微软退出的
slngen 工具来体验一下局部加载解决方案中的局部我的项目吧。
slngen 从根我的项目生成长期解决方案
SlnGen 是一个 Visual Studio 解决方案文件生成器。Visual Studio 解决方案对于大型项目树来说通常不能很好地扩大。SlnGen 读取一个给定我的项目的我的项目援用,按需创立一个 Visual Studio 解决方案。例如,你能够针对一个单元测试我的项目运行 SlnGen,并出现一个蕴含单元测试我的项目及其所有我的项目援用的 Visual Studio 解决方案。你也能够针对一个有根的文件夹中的遍历我的项目运行 SlnGen,关上一个蕴含你的我的项目树的那个视图的 Visual Studio 解决方案。
装置 slngen
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
在你的我的项目树中,你须要为所有的我的项目引入 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 生成长期解决方案
留神 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 不得行。
参考资料
- Directory.Build.props1
- SlnGen2
- SlnGen – GitHub3
感谢您的浏览,如果您感觉本文有用,请点赞、关注和转发。最近咱们正在组织全新的技术交换形式,欢送点击链接莅临指导 https://www.newbe.pro/links/
- 本文作者:newbe36524
- 本文链接:https://www.newbe.pro/Others/0x020-csharp-how-to-partially-load-some-items-in-a-mega-solution/
- 版权申明:本博客所有文章除特地申明外,均采纳 BY-NC-SA 许可协定。转载请注明出处!
- https://learn.microsoft.com/v… ↩
- https://www.nuget.org/package… ↩
- https://github.com/microsoft/… ↩