Kysect.DotnetProjectSystem
0.1.16
Prefix Reserved
See the version list below for details.
dotnet add package Kysect.DotnetProjectSystem --version 0.1.16
NuGet\Install-Package Kysect.DotnetProjectSystem -Version 0.1.16
<PackageReference Include="Kysect.DotnetProjectSystem" Version="0.1.16" />
paket add Kysect.DotnetProjectSystem --version 0.1.16
#r "nuget: Kysect.DotnetProjectSystem, 0.1.16"
// Install Kysect.DotnetProjectSystem as a Cake Addin #addin nuget:?package=Kysect.DotnetProjectSystem&version=0.1.16 // Install Kysect.DotnetProjectSystem as a Cake Tool #tool nuget:?package=Kysect.DotnetProjectSystem&version=0.1.16
Kysect.DotnetProjectSystem
DotnetProjectSystem is a nuget package for working with .sln, .csproj and .props files: parsing, modifying and generating.
Generating
This code samples:
var factory = new SolutionFileStructureBuilderFactory(_fileSystem, _syntaxFormatter);
factory
.Create(solutionName)
.AddProject(
new ProjectFileStructureBuilder("Project")
.SetContent("<Project></Project>"))
.AddFile(new SolutionFileInfo(["Directory.Build.props"], "<Project></Project>"))
.Save("C:\\Repositories\\");
will create this file structure:
- ./
- Project/
- Project.csproj
- MySolution.sln
- Directory.Build.props
Parsing
Nuget provide API for parsing .sln and .csproj files:
string solutionFilePath = ...;
DotnetSolutionParser parser = new DotnetSolutionParser(_fileSystem, logger);
DotnetSolutionDescriptor result = parser.ParseContent(solutionFilePath);
// result.FilePath == C:\Solution\Solution.sln
// result.Projects ==
// {
// { "C:\Solution\Project.csproj", <DotnetProjectFile> }
// }
Modification
Nuget provide API for modification of parsed solution. Sample of modification;
syntaxFormatter = new XmlDocumentSyntaxFormatter();
DotnetSolutionModifier solutionModifier = solutionModifierFactory.Create("Solution.sln");
solutionModifier
.GetOrCreateDirectoryPackagePropsModifier()
.SetCentralPackageManagement(true);
solutionModifier.Save(syntaxFormatter)
This code will add <ManagePackageVersionsCentrally>
to Directory.Package.props
file.
For this modification was introduces strategy that describe modification:
public class SetTargetFrameworkModifyStrategy(string value) : IXmlProjectFileModifyStrategy<XmlElementSyntax>
{
public IReadOnlyCollection<XmlElementSyntax> SelectNodeForModify(XmlDocumentSyntax document)
{
document.ThrowIfNull();
return document
.GetNodesByName("TargetFramework")
.OfType<XmlElementSyntax>()
.ToList();
}
public SyntaxNode ApplyChanges(XmlElementSyntax syntax)
{
syntax.ThrowIfNull();
XmlTextSyntax content = SyntaxFactory.XmlText(SyntaxFactory.XmlTextLiteralToken(value, null, null));
return syntax.ReplaceNode(syntax.Content.Single(), content);
}
}
And this strategy applied to solutions:
DotnetSolutionModifier solutionModifier = solutionModifierFactory.Create("Solution.sln");
foreach (DotnetProjectModifier solutionModifierProject in solutionModifier.Projects)
solutionModifierProject.File.UpdateDocument(new SetTargetFrameworkModifyStrategy("net9.0"));
solutionModifier.Save(syntaxFormatter);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- GuiLabs.Language.Xml (>= 1.2.88)
- Kysect.CommonLib (>= 0.1.18)
- Kysect.Editorconfig (>= 1.1.8)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Kysect.DotnetProjectSystem:
Package | Downloads |
---|---|
Kysect.PowerShellRunner.CodeGeneration
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 293 | 5/5/2024 |
0.1.16 | 166 | 3/28/2024 |
0.1.15 | 104 | 3/27/2024 |
0.1.14 | 156 | 3/17/2024 |
0.1.13 | 148 | 3/17/2024 |
0.1.12 | 129 | 3/8/2024 |
0.1.11 | 220 | 2/10/2024 |
0.1.10 | 150 | 1/28/2024 |
0.1.9 | 104 | 1/28/2024 |
0.1.8 | 118 | 1/28/2024 |
0.1.7 | 105 | 1/27/2024 |
0.1.6 | 101 | 1/27/2024 |
0.1.5 | 104 | 1/27/2024 |
0.1.4 | 103 | 1/27/2024 |
0.1.3 | 99 | 1/27/2024 |
0.1.2 | 102 | 1/27/2024 |
0.1.1 | 111 | 1/27/2024 |
0.1.0 | 110 | 1/23/2024 |