Skip to content

3F/IeXod

Repository files navigation

The most portable alternative to Microsoft.Build for evaluating, manipulating, and other progressive data processing in a compatible XML-like syntax.

Copyright (c) .NET Foundation and contributors
Copyright (c) 2020-2024  Denis Kuzmin <x-3F@outlook.com> github/3F
Copyright (c) IeXod contributors https://github.com/3F/IeXod/graphs/contributors

「 ❤ 」 License Build status release NuGet IeXod

Why IeXod

3F/MvsSln#23

🔍 Easy to use

Microsoft.Build with its typical error [?]

// 'The SDK 'Microsoft.NET.Sdk' specified could not be found.
new Project("<path to Sdk-style project file>");

IeXod 👇

new Project("<path to Sdk-style project file>"); // Microsoft.NET.Sdk -> 
/* ~
+ Imports  Count = 30
+ AllEvaluatedItemDefinitionMetadata  Count = 21
+ AllEvaluatedItems  Count = 108
+ AllEvaluatedProperties  Count = 367
...
*/

🔧 Configurable Sdk resolvers at runtime

new Project("...", properties, ProjectToolsOptions.Default);

new Project("...", properties, new ProjectToolsOptions(new[] { 
    @"path_to_\sys\resolvers\", 
    @"path2\",
    ...
}));

ProjectToolsOptions.Default.SdkResolvers = new SdkResolver[] { 
    new SysResolver(), 
    new ProdResolver(),
    ...
};

🧦🎯 Automatic searching of the modern Toolsets

VS setup API + Registry + hMSBuild.bat + Configuration files + ...;

That continues direction of https://github.com/3F/hMSBuild

🔨 Exposing Toolsets in classical notation

> {[Current, ToolsPath=...\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64]}
...
{[14.0, ToolsPath=C:\Program Files (x86)\MSBuild\14.0\bin\amd64]}
{[15.0, ToolsPath=...\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64]}
{[16.0, ToolsPath=...\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64]}
>> {[17.0, ToolsPath=...\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64]}

🧰 Portability, Compatibility, and Functionality

Modern #MSBuild assemblies are much more closely integrated with #VisualStudio and much more difficult to maintain independently [?]

This is most important goal for IeXod project. To help to avoid the following nightmare:

❌ From difficulty use (~ Microsoft.Build.Locator) to unpredictable behavior in various products (~ Visual Studio etc) due to active integration inside a single environment with Microsoft.Build.

🎈 Something More

in progress ...

Follow the news;

Contribute;

Enjoy!

IeXod and custom Sdk Resolvers

IeXod provides independent interface for the easiest implementation of any new Sdk Resolvers.

NuGet IeXod.SdkResolver

Extend evaluation as you need; Then, easily register and configure new resolvers on the fly!

Where is used

( 📅 Planned at least after first stable IeXod release )