Skip to content

Commit

Permalink
IeXod 0.2. Public Release
Browse files Browse the repository at this point in the history
* NEW: New Evaluation.Expander. Adds external use of missing functions:
       new/unknown(yet for IeXod engine) MSBuild static functions $([MSBuild]::...

* NEW: Basic Tasks support as IeXod.Tasks. + RoslynCodeTaskFactory. (No host or extenral nodes yet)
       IeXod.Tasks also improves additional references to standard library assemblies
       in RoslynCodeTaskFactory + Compilers (Roslyn tools)

* NEW: Support hMSBuild 2.4.1 helper for custom search related engines.

* NEW: IeXodBinPath property. Where IeXod.dll is located.

* FIXED: Possible InvalidProjectFileException "Could not find a part of the path ..."
         When Import SDKs projects.

* FIXED: Wrong minimal compatible Sdk version ~ 1.1.0
         When Sdk-style evaluation, e.g. Sdk="Microsoft.NET.Sdk"

* FIXED: Failed hostfxr use in Sdk resolving when .NET Core target platforms.

* FIXED: Possible incorrect evaluation MSBuildExtensionsPath or like properties.

* FIXED: Using most of the original MSBxxxx messages.

* FIXED: Fixed SdkResolverLoader and ProjectInstance initialization.

* CHANGED: Improved expanding of the Import attribute using extra fallback logic.

* CHANGED: .tasks processing using IeXod.Tasks by default.

* CHANGED: MSBuildFrameworkToolsRoot changed to FrameworkBasePath value at runtime.

* CHANGED: MSB4010 Warning now is considered as XD4010 Message.

* CHANGED: MSBUILD_EXE_PATH now is considered as IEXOD_PATH_TO_MSBUILD_EXE

* CHANGED: Changed logic for searching Toolset properties using extra fallback.

* CHANGED: Improved searcing of the original engine.

* CHANGED: Improved accessing to the most known properties from the original engine and its SDKs.

* CHANGED: Original ProjectCollection.Version changed as EngineVersion
           Modified Version now points to MSBuild-compatible Version.

* CHANGED: Updated hostfxr.dll 6.0.22 (fix doubling the collection using hostfxr_get_available_sdks_result_fn, etc.)
  • Loading branch information
3F committed Feb 21, 2024
1 parent c150a40 commit 0c7bbc2
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 39 deletions.
40 changes: 19 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [IeXod](https://github.com/3F/IeXod)

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

```r
Copyright (c) .NET Foundation and contributors
Expand All @@ -12,16 +12,15 @@ Copyright (c) IeXod contributors https://github.com/3F/IeXod/graphs/contributors
[![Build status](https://ci.appveyor.com/api/projects/status/mclqcptonbch6jjv/branch/master?svg=true)](https://ci.appveyor.com/project/3Fs/iexod/branch/master)
[![release](https://img.shields.io/github/v/release/3F/IeXod?include_prereleases&sort=semver)](https://github.com/3F/IeXod/releases/latest)
[![NuGet IeXod](https://img.shields.io/nuget/v/IeXod.svg)](https://www.nuget.org/packages/IeXod/)
[![Tests](https://img.shields.io/appveyor/tests/3Fs/iexod/master.svg)](https://ci.appveyor.com/project/3Fs/iexod/build/tests)


# Why IeXod
## Why IeXod

https://github.com/3F/MvsSln/issues/23

## 🔍 Easy to use
### 🔍 Easy to use

MSBuild with its typical error [[?]](https://github.com/3F/MvsSln/wiki/Advanced-Features#about--possible--problems)
*Microsoft.Build* with its typical error [[?]](https://github.com/3F/MvsSln/wiki/Advanced-Features#about--possible--problems)

```csharp
// 'The SDK 'Microsoft.NET.Sdk' specified could not be found.
Expand All @@ -41,7 +40,7 @@ new Project("<path to Sdk-style project file>"); // Microsoft.NET.Sdk ->
*/
```

## 🔧 Configurable Sdk resolvers at runtime:
### 🔧 Configurable Sdk resolvers at runtime

```csharp
new Project("...", properties, ProjectToolsOptions.Default);
Expand All @@ -59,54 +58,53 @@ ProjectToolsOptions.Default.SdkResolvers = new SdkResolver[] {
};
```

## 🧦🎯 Automatic searching of the modern Toolsets
### 🧦🎯 Automatic searching of the modern Toolsets

VS setup API + Registry + Configuration files;
VS setup **API** + Registry + [hMSBuild.bat](https://3F.github.io/hMSBuild/releases/latest/) + Configuration files + ...;

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

## 🔨 Exposing Toolsets in classical notation:
### 🔨 Exposing Toolsets in classical notation

```csharp
> {[Current, ToolsPath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64]}
```
> {[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=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64]}
>> {[16.0, ToolsPath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\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
### 🧰 Portability, Compatibility, and Functionality

> Modern #MSBuild assemblies are much more closely integrated with #VisualStudio and much more difficult to maintain independently [[?]](https://twitter.com/GitHub3F/status/1184170248532119552)
This is most important goal for [IeXod](https://github.com/3F/IeXod) project. To help to avoid the following nightmare:

❌ From difficulty use (\~ [Microsoft.Build.Locator](https://www.nuget.org/packages/Microsoft.Build.Locator/) an official solution) to unpredictable behavior in various products (\~ Visual Studio etc) due to active integration inside a single environment with *Microsoft.Build.*

## 🎈 Something More
❌ From difficulty use (\~ [Microsoft.Build.Locator](https://www.nuget.org/packages/Microsoft.Build.Locator/)) to unpredictable behavior in various products (\~ Visual Studio etc) due to active integration inside a single environment with *Microsoft.Build.*

We were just born. Alpha state :3
### 🎈 Something More

in progress ...

Follow the news;

* https://github.com/3F
* https://github.com/3F/IeXod
* https://twitter.com/GitHub3F

Contribute;

Enjoy!

# IeXod and custom Sdk Resolvers
## IeXod and custom Sdk Resolvers

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

[![NuGet IeXod.SdkResolver](https://img.shields.io/nuget/v/IeXod.SdkResolver.svg)](https://www.nuget.org/packages/IeXod.SdkResolver/)

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

# Where is used
## Where is used

( 📅 Planned at least after first stable IeXod release )

Expand Down
52 changes: 50 additions & 2 deletions changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,56 @@
IeXod - https://github.com/3F/IeXod
- - - - - - - - - - - - - - - - - -

[0.2] 2024.02.22

[v0.1-beta] 2020.06.04
* NEW: New Evaluation.Expander. Adds external use of missing functions:
new/unknown(yet for IeXod engine) MSBuild static functions $([MSBuild]::...

* NEW: Basic Tasks support as IeXod.Tasks. + RoslynCodeTaskFactory. (No host or extenral nodes yet)
IeXod.Tasks also improves additional references to standard library assemblies
in RoslynCodeTaskFactory + Compilers (Roslyn tools)

* NEW: Support hMSBuild 2.4.1 helper for custom search related engines.

* NEW: IeXodBinPath property. Where IeXod.dll is located.

* FIXED: Possible InvalidProjectFileException "Could not find a part of the path ..."
When Import SDKs projects.

* FIXED: Wrong minimal compatible Sdk version ~ 1.1.0
When Sdk-style evaluation, e.g. Sdk="Microsoft.NET.Sdk"

* FIXED: Failed hostfxr use in Sdk resolving when .NET Core target platforms.

* FIXED: Possible incorrect evaluation MSBuildExtensionsPath or like properties.

* FIXED: Using most of the original MSBxxxx messages.

* FIXED: Fixed SdkResolverLoader and ProjectInstance initialization.

* CHANGED: Improved expanding of the Import attribute using extra fallback logic.

* CHANGED: .tasks processing using IeXod.Tasks by default.

* CHANGED: MSBuildFrameworkToolsRoot changed to FrameworkBasePath value at runtime.

* CHANGED: MSB4010 Warning now is considered as XD4010 Message.

* CHANGED: MSBUILD_EXE_PATH now is considered as IEXOD_PATH_TO_MSBUILD_EXE

* CHANGED: Changed logic for searching Toolset properties using extra fallback.

* CHANGED: Improved searcing of the original engine.

* CHANGED: Improved accessing to the most known properties from the original engine and its SDKs.

* CHANGED: Original ProjectCollection.Version changed as EngineVersion
Modified Version now points to MSBuild-compatible Version.

* CHANGED: Updated hostfxr.dll 6.0.22 (fix doubling the collection using hostfxr_get_available_sdks_result_fn, etc.)


[0.1-beta] 2020.06.04

* Initial public release.

Expand All @@ -12,7 +60,7 @@ IeXod - https://github.com/3F/IeXod
https://github.com/3F/IeXod


[v1.0][SdkResolver] 2020.06.04
[1.0][SdkResolver] 2020.06.04

* Initial public release.

Expand Down
18 changes: 9 additions & 9 deletions src/Build/IeXod.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@
<None Include="..\..\.tools\hMSBuild.bat" Pack="true" PackagePath="lib/$([System.String]::Join(';lib/', '$(IeXodTFM.Split(`;`))'))">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<!-- after ResolveHostfxrCopyLocalContent -->
<hostfxrX64lib Include="$(OutputPath)\*\x64\hostfxr.dll" />
<hostfxrX86lib Include="$(OutputPath)\*\x86\hostfxr.dll" />
<None Include="@(hostfxrX64lib)" Pack="true" PackagePath="lib/">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="@(hostfxrX86lib)" Pack="true" PackagePath="lib/">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<!--
TODO: after ResolveHostfxrCopyLocalContent
<hostfxrX64lib Include="$(OutputPath)\*\x64\hostfxr.dll" />
<None Include="@(hostfxrX64lib)" Pack="true" PackagePath="lib/" />
-->
<None Include="$(OutputPath)\net472\x64\hostfxr.dll" Pack="true" PackagePath="lib/net472/x64" />
<None Include="$(OutputPath)\net472\x86\hostfxr.dll" Pack="true" PackagePath="lib/net472/x86" />
<None Include="$(OutputPath)\netcoreapp2.1\x64\hostfxr.dll" Pack="true" PackagePath="lib/netcoreapp2.1/x64" />
<None Include="$(OutputPath)\netcoreapp2.1\x86\hostfxr.dll" Pack="true" PackagePath="lib/netcoreapp2.1/x86" />
</ItemGroup>

<ItemGroup>
Expand Down
6 changes: 3 additions & 3 deletions src/Shared/UnitTests/App.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version ="1.0"?>
<configuration>
<configSections>
<section name="msbuildToolsets" type="net.r_eg.IeXod.Evaluation.ToolsetConfigurationSection, IeXod, Version=0.1.0.0, Culture=neutral, PublicKeyToken=4bbd2ef743db151e" />
<section name="msbuildToolsets" type="net.r_eg.IeXod.Evaluation.ToolsetConfigurationSection, IeXod, Version=0.2.0.0, Culture=neutral, PublicKeyToken=4bbd2ef743db151e" />
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
Expand All @@ -13,11 +13,11 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="IeXod" culture="neutral" publicKeyToken="4bbd2ef743db151e" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="0.1.0.0"/>
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="0.2.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="IeXod.Tasks" culture="neutral" publicKeyToken="4bbd2ef743db151e" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="0.1.0.0"/>
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="0.2.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Expand Down
6 changes: 3 additions & 3 deletions src/common.props
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,13 @@
<Copyright>Copyright (c) .NET Foundation and contributors
| Copyright (c) 2020-2024 Denis Kuzmin &lt;[email protected]&gt; github/3F
</Copyright>
<Title>[ IeXod ] 🧰 The most portable alternative to Microsoft.Build</Title>
<Description>This is IeXod and its components. 🧰 The most portable alternative to Microsoft.Build for evaluating, manipulating, and other progressive data processing in a compatible XML-like syntax. https://github.com/3F/IeXod</Description>
<Title>[ IeXod ] The most portable alternative to Microsoft.Build</Title>
<Description>The most portable alternative to Microsoft.Build for evaluating, manipulating, and other progressive data processing in a compatible XML-like syntax. https://github.com/3F/IeXod</Description>
<PackageOwners>reg</PackageOwners>
<PackageProjectUrl>https://github.com/3F/IeXod</PackageProjectUrl>
<RepositoryUrl>https://github.com/3F/IeXod</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>MSBuild evaluator MicrosoftBuild evaluating VisualStudio parser project-parser projects csproj vcxproj MSBuildSdkResolver VS2019 VS2017 VS2015 VS2013 VS2012 VS2010 msbuildtargets xml targets props proj EvMSBuild SobaScript IeXod IeXodSdkResolver</PackageTags>
<PackageTags>MSBuild evaluator MicrosoftBuild evaluating VisualStudio parser project-parser projects csproj vcxproj MSBuildSdkResolver VS2022 VS2019 VS2017 VS2015 VS2013 VS2012 VS2010 msbuildtargets xml targets props proj IeXod IeXodSdkResolver</PackageTags>
<PackageReleaseNotes> changelog: https://github.com/3F/IeXod/blob/master/changelog.txt </PackageReleaseNotes>
<Authors>github.com/3F/IeXod</Authors>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/versions.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>

<PropertyGroup>
<ProductIeXodVersion>0.1.0-beta</ProductIeXodVersion>
<ProductIeXodVersion>0.2.0</ProductIeXodVersion>
<ProductIeXodSdkResolverVersion>1.0.0</ProductIeXodSdkResolverVersion>
</PropertyGroup>

Expand Down

0 comments on commit 0c7bbc2

Please sign in to comment.