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
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
...
*/
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(),
...
};
VS setup API + Registry + hMSBuild.bat + Configuration files + ...;
That continues direction of https://github.com/3F/hMSBuild
> {[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]}
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.
in progress ...
Follow the news;
Contribute;
Enjoy!
IeXod provides independent interface for the easiest implementation of any new Sdk Resolvers.
Extend evaluation as you need; Then, easily register and configure new resolvers on the fly!
( 📅 Planned at least after first stable IeXod release )