Skip to content
This repository was archived by the owner on Feb 8, 2025. It is now read-only.

Commit bd9bc65

Browse files
authored
Commit source of SLNX 3.0
1 parent f718718 commit bd9bc65

19 files changed

+1393
-15
lines changed

Slnx.sln

+25-15
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,32 @@ VisualStudioVersion = 17.10.35122.118
44
MinimumVisualStudioVersion = 10.0.40219.1
55
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4ED70E92-F679-4B86-A5B3-EC1234EA24D2}"
66
EndProject
7-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2629E79A-539B-49CE-8466-6F99FB34B6FB}"
8-
EndProject
97
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Slnx", "src\Slnx\Slnx.csproj", "{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}"
108
EndProject
11-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Slnx.TestConsole", "test\Slnx.TestConsole\Slnx.TestConsole.csproj", "{BF6A75A8-2A70-42AC-A84A-547CED1EF608}"
9+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmark", "benchmark", "{D32C2907-F140-4C3B-98A4-F5511A2C8D43}"
10+
EndProject
11+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Slnx.ReadBenchmark", "benchmark\Slnx.ReadBenchmark\Slnx.ReadBenchmark.csproj", "{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}"
1212
EndProject
13-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Slnx.TestConsoleV2", "test\Slnx.TestConsoleV2\Slnx.TestConsoleV2.csproj", "{280DDE7C-6B42-44CF-8BE4-2EFB4106814E}"
13+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Slnx.WriteBenchmark", "benchmark\Slnx.WriteBenchmark\Slnx.WriteBenchmark.csproj", "{420A3B54-9B79-41A3-82D0-7C275212B44D}"
1414
EndProject
1515
Global
1616
GlobalSection(ExtensibilityGlobals) = postSolution
1717
SolutionGuid = {C1D04ABB-EF13-4243-A653-B1BC6CB05EB8}
1818
EndGlobalSection
1919
GlobalSection(NestedProjects) = preSolution
20-
{280DDE7C-6B42-44CF-8BE4-2EFB4106814E} = {2629E79A-539B-49CE-8466-6F99FB34B6FB}
21-
{BF6A75A8-2A70-42AC-A84A-547CED1EF608} = {2629E79A-539B-49CE-8466-6F99FB34B6FB}
20+
{420A3B54-9B79-41A3-82D0-7C275212B44D} = {D32C2907-F140-4C3B-98A4-F5511A2C8D43}
21+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301} = {D32C2907-F140-4C3B-98A4-F5511A2C8D43}
2222
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0} = {4ED70E92-F679-4B86-A5B3-EC1234EA24D2}
2323
EndGlobalSection
2424
GlobalSection(ProjectConfigurationPlatforms) = postSolution
25-
{280DDE7C-6B42-44CF-8BE4-2EFB4106814E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26-
{280DDE7C-6B42-44CF-8BE4-2EFB4106814E}.Debug|Any CPU.Build.0 = Debug|Any CPU
27-
{280DDE7C-6B42-44CF-8BE4-2EFB4106814E}.Release|Any CPU.ActiveCfg = Release|Any CPU
28-
{280DDE7C-6B42-44CF-8BE4-2EFB4106814E}.Release|Any CPU.Build.0 = Release|Any CPU
29-
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30-
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Debug|Any CPU.Build.0 = Debug|Any CPU
31-
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Release|Any CPU.ActiveCfg = Release|Any CPU
32-
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Release|Any CPU.Build.0 = Release|Any CPU
25+
{420A3B54-9B79-41A3-82D0-7C275212B44D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26+
{420A3B54-9B79-41A3-82D0-7C275212B44D}.Debug|Any CPU.Build.0 = Debug|Any CPU
27+
{420A3B54-9B79-41A3-82D0-7C275212B44D}.Release|Any CPU.ActiveCfg = Release|Any CPU
28+
{420A3B54-9B79-41A3-82D0-7C275212B44D}.Release|Any CPU.Build.0 = Release|Any CPU
29+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Release|Any CPU.ActiveCfg = Release|Any CPU
32+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Release|Any CPU.Build.0 = Release|Any CPU
3333
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3434
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
3535
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -43,7 +43,17 @@ Global
4343
HideSolutionNode = FALSE
4444
EndGlobalSection
4545
EndGlobal
46-
= Debug|Any CPU
46+
ny CPU.Build.0 = Release|Any CPU
47+
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
48+
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Debug|Any CPU.Build.0 = Debug|Any CPU
49+
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Release|Any CPU.ActiveCfg = Release|Any CPU
50+
{BF6A75A8-2A70-42AC-A84A-547CED1EF608}.Release|Any CPU.Build.0 = Release|Any CPU
51+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Debug|Any CPU.Build.0 = Debug|Any CPU
53+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Release|Any CPU.ActiveCfg = Release|Any CPU
54+
{BFB1A338-7FE1-46A1-9F41-2BEF3ABBF301}.Release|Any CPU.Build.0 = Release|Any CPU
55+
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56+
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
4757
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
4858
{D23FC02A-231A-48F1-86E3-1C6DD9D0D8C0}.Release|Any CPU.Build.0 = Release|Any CPU
4959
EndGlobalSection
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using BenchmarkDotNet.Attributes;
2+
using BenchmarkDotNet.Running;
3+
using Slnx;
4+
5+
BenchmarkRunner.Run<Benchie>();
6+
7+
[MemoryDiagnoser]
8+
public class Benchie
9+
{
10+
private const string Input = """
11+
<Solution>
12+
<Folder Name="Solution Items">
13+
<File Path="File1.cs" />
14+
<File Path=".editorconfig" />
15+
<Project Path="File.csproj" />
16+
<Folder Name="Test">
17+
<File Path=".editorconfig" />
18+
<File Path="data.cs" />
19+
</Folder>
20+
</Folder>
21+
</Solution>
22+
""";
23+
24+
[Benchmark]
25+
public void ReadBenchie()
26+
{
27+
_ = SlnxModel.Load(Input);
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\..\src\Slnx\Slnx.csproj" />
16+
</ItemGroup>
17+
18+
</Project>
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using BenchmarkDotNet.Attributes;
2+
using BenchmarkDotNet.Running;
3+
using Slnx;
4+
5+
BenchmarkRunner.Run<Benchie>();
6+
7+
[MemoryDiagnoser]
8+
public class Benchie
9+
{
10+
[Benchmark]
11+
public void WriteBenchie()
12+
{
13+
var factory = new SlnxFactory();
14+
15+
var folder = new Folder("Solution Items");
16+
folder.AddProjectWithPathOnly("./CSharp/CSharp.csproj");
17+
folder.AddProjectWithPathOnly("./VB.NET/VB.NET.vbproj");
18+
folder.AddProject(new Project("./DockerCompose/DockerCompose.dcproj", type: null, config: new(solution: "*|*", project: "*|*|Deploy")));
19+
var moreFolders = new Folder("C++");
20+
moreFolders.AddFiles(["util.cpp", "util.h", "data.cc", "data.h"]);
21+
folder.AddFiles(["File1.cs", "File2.cs"]);
22+
23+
factory.AddFolder(folder);
24+
factory.AddProjectWithPathOnly("Slnx/Slnx.csproj");
25+
factory.AddProjectWithPathOnly("App/App.shproj");
26+
27+
_ = factory.AsModel().Store();
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\..\src\Slnx\Slnx.csproj" />
16+
</ItemGroup>
17+
18+
</Project>

src/Slnx/DescendantConfiguration.cs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace Slnx
2+
{
3+
/// <summary>
4+
/// Represents a "&lt;Configuration&gt;" like tag.
5+
/// </summary>
6+
public class DescendantConfiguration
7+
{
8+
/// <summary>
9+
/// Solution where this configuration applies to.
10+
/// </summary>
11+
public string? Solution { get; init; }
12+
13+
/// <summary>
14+
/// Project where this configuration applies to.
15+
/// </summary>
16+
public string? Project { get; init; }
17+
18+
/// <summary>
19+
/// Initializes a new instance of the <see cref="DescendantConfiguration" /> class.
20+
/// </summary>
21+
/// <param name="solution">Solution where this configuration applies to.</param>
22+
/// <param name="project">Project where this configuration applies to.</param>
23+
public DescendantConfiguration(string? solution, string? project)
24+
{
25+
Solution = solution;
26+
Project = project;
27+
}
28+
}
29+
}

0 commit comments

Comments
 (0)