关于c#:C-如何部分加载超大解决方案中的部分项目

37次阅读

共计 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 许可协定。转载请注明出处!

  1. https://learn.microsoft.com/v… ↩
  2. https://www.nuget.org/package… ↩
  3. https://github.com/microsoft/… ↩

正文完
 0