MvsSln Integration. Back to parent. by 3F · Pull Request #53 · 3F/vsSolutionBuildEvent

@3F

…Build etc.

Back to parent :)

added a commit to 3F/MvsSln that referenced this pull request

Jul 16, 2019
…Disposable)

+ Also adds an regular MSBuild Properties and other related changes for convenient work with this properties like extension method GetFileProperties, AddOrUpdate etc.

Part of 3F/vsSolutionBuildEvent#53
WIP

@3F 3F mentioned this pull request

Jul 16, 2019

@3F

Main Environment still in progress.

3F added a commit to 3F/MvsSln that referenced this pull request

Jul 29, 2019
…sSolutionBuildEvent:

3F/vsSolutionBuildEvent#53
#17

## IConfPlatform changes:

+`bool IsEqualByRule(string config, string platform, bool icase = false);`

    Checking an config/platform by using {Rule} instance.

## IXProjectEnv changes:

+`IXProject XProjectByFile(...);`

    Find project by full path to file.

+`IEnumerable<IXProject> Assign(IEnumerable<Project> projects = null);`

    Assign an existing `Microsoft.Build.Evaluation.Project` instances for local collection.

+`IXProject AddOrGet(Project project);`

    Adds `Microsoft.Build.Evaluation.Project` instance into IXProject collection if it does not exist.

+`ProjectItemCfg ExtractItemCfg(Project project);`

    Prepares data from `Microsoft.Build.Evaluation.Project` instance.

+`void UnloadAll(bool throwIfErr = true);`

    Unloads all evaluated projects at current time.

+`bool Unload(IXProject xp);`

    Unloads specified project.

+`IEnumerable<Project> ValidProjects`

    List of valid projects such as something except `.user` but contains FirstChild / LastChild XML node.

## ISlnResult changes:

+`string SolutionFile`

    Full path to an solution file.

## New extension methods:

```
+TVal GetOrDefault<TKey, TVal>(this IDictionary<TKey, TVal> data, TKey key, TVal def)
+bool IsEqual(this Project a, Project b)
+string GetSolutionDir(this Project eProject)
+string GetProjectRelativePath(this Project eProject)
+string GetConfig(this Project eProject)
+string GetPlatform(this Project eProject)
+string GetSolutionExt(this Project eProject)
```

## Other

* Removed pGuid checking from `IXProjectEnv.GetOrLoadProject()`
* Added `FileExt` type for work with `ProjectType` via its file only.

@3F

Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in #53

@3F

Also fixed bug when creating new solution for #53 changes.

@3F 3F changed the title WIP MvsSln Integration. Back to parent. MvsSln Integration. Back to parent.

Aug 4, 2019

@3F 3F deleted the sub/MvsSln/init branch

August 4, 2019 18:46

@3F 3F mentioned this pull request

Aug 4, 2019

3F added a commit to 3F/MvsSln that referenced this pull request

Aug 10, 2019
* FIXED: "The format ... of configuration is not supported". Issue #19.

* FIXED: Fixed loading of projects via `IsolatedEnv.LoadProjects()`.

* FIXED: Fixed possible NullReferenceException in `ProjectItem` constructors.

* NEW: Introduces XProjectEnv. PR #17.
       An splitted IsolatedEnv as the base but without IDisposable.
    ```
    IXProjectEnv slnEnv;
    ...
    slnEnv = new XProjectEnv(sln, properties);
    ...
    slnEnv = new IsolatedEnv(sln); // +IEnvironment, +IDisposable
    slnEnv.Assign();
    ...
    ((IDisposable)slnEnv)?.Dispose();
    ```

* NEW: Added `PropertyNames` type. Regular MSBuild Properties and related.

* NEW: Added `FileExt` type for work with `ProjectType` via its file only.

* NEW: Added `Kinds` type: PRJ_UNLOADED; PRJ_SLN_DIR

* NEW: New extension methods:
    ```
    +TVal GetOrDefault<TKey, TVal>(this IDictionary<TKey, TVal> data, TKey key, TVal def)
    +bool IsEqual(this Project a, Project b)
    +string GetSolutionDir(this Project eProject)
    +string GetProjectRelativePath(this Project eProject)
    +string GetConfig(this Project eProject)
    +string GetPlatform(this Project eProject)
    +string GetSolutionExt(this Project eProject)
    string GetDirectoryFromFile(this string file)
    Dictionary<string, string> GetFileProperties(this string file)
    IDictionary<string, string> AddOrUpdate(this IDictionary<string, string> source, IDictionary<string, string> items)
    bool Remove<T>(this IList<T> src, T elem, Func<T, T, bool> comparer)
    bool IsLimEqual(this IXProject x, IXProject prj)
    ```

* CHANGED: Removed pGuid checking from `IXProjectEnv.GetOrLoadProject()`
           Related to Issue #18.

* CHANGED: ISlnResult changes:
    ```
    +`string SolutionFile`
        Full path to an solution file.
        Old versions still can address it through Properties.
    ```

* CHANGED: IConfPlatform changes:
    ```
    +`bool IsEqualByRule(string config, string platform, bool icase = false);`
        Checking an config/platform by using {Rule} instance.
    ```

* CHANGED: IXProjectEnv (IEnvironment) changes:
    ```
    +`IXProject XProjectByFile(...);`
        Find project by full path to file.

    +`IEnumerable<IXProject> Assign(IEnumerable<Project> projects = null);`
        Assign an existing `Microsoft.Build.Evaluation.Project` instances for local collection.

    +`IXProject AddOrGet(Project project);`
        Adds `Microsoft.Build.Evaluation.Project` instance into IXProject collection if it does not exist.

    +`ProjectItemCfg ExtractItemCfg(Project project);`
        Prepares data from `Microsoft.Build.Evaluation.Project` instance.

    +`void UnloadAll(bool throwIfErr = true);`
        Unloads all evaluated projects at current time.

    +`bool Unload(IXProject xp);`
        Unloads specified project.

    +`IEnumerable<Project> ValidProjects`
        List of valid projects such as something except `.user`,`.metaproj` but contains FirstChild / LastChild XML node.
    ```

* CHANGED: Updated package's tool hMSBuild 2.2

           Release notes:
           https://github.com/3F/hMSBuild/releases/tag/v2.2

* NOTE: The most 2.4 changes is relevant to integration with vsSolutionBuildEvent.

        https://twitter.com/GitHub3F/status/1158091930309398528
        3F/vsSolutionBuildEvent#53
        #17

        Find any relevant use of the new features in that project.

3F added a commit that referenced this pull request

Sep 21, 2019
IsolatedEnv and GetMutualPropValue

Broken in #53

@3F 3F mentioned this pull request

Sep 21, 2019

3F added a commit that referenced this pull request

Sep 26, 2019
* NEW: Integration with MvsSln project. v2.4 PR #53.
       Replaces processing from IsolatedEnv/MSBuild/+ and fully removes our old parser.
       Finally it fixes lot of bugs (such as: #42, #41, #40,..) and also improves performance.
       https://github.com/3F/MvsSln

* NEW: Open Source independent script engines under the MIT License. Issue #55.

* NEW: Integration with E-MSBuild project. v1.14. Part of PR #56.
       Advanced Evaluator of MSBuild scripts with user-variables support through Varhead and more.
       https://github.com/3F/E-MSBuild

* NEW: Integration with SobaScript -- an Extensible Modular Scripting Programming Language.
       Part of PR #56.
       https://github.com/3F/SobaScript

* NEW: Included SobaScript Components:
       Z.Core: https://github.com/3F/SobaScript.Z.Core
        * ConditionComponent
        * EvMSBuildComponent
        * UserVariableComponent
        * TryComponent
        * CommentComponent
        * BoxComponent

       Z.Ext: https://github.com/3F/SobaScript.Z.Ext
        * SevenZipComponent
        * NuGetComponent
        * FileComponent
        * FunctionComponent

       Z.VS: https://github.com/3F/SobaScript.Z.VS
        * DTEComponent
        * OwpComponent
        * BuildComponent

* FIXED: Possible "Can not load 7-zip library or internal COM error"
         When using x64 instance. Issue #38.

* FIXED: Possible "An equivalent project is already present in the project collection."
         Issue #42.

* FIXED: Possible incorrect projects for MSBuild Properties
            ~ $(TargetFrameworkVersion:Metadata) Issue #41.

* FIXED: Failed getting project from EnvDTE. Issue #40.

* CHANGED: Increased performance when evaluating data and scripts.

* CHANGED: Updated 7z.Libs 19.0.1.

* CHANGED: Updated AvalonEdit 5.0.4

* CHANGED: Updated Microsoft.VisualStudio.Shell.15.0 15.9.28307

* CHANGED: SDK15 packages only:
           Updated Microsoft.Build & Microsoft.Build.Framework 16.0.461

* CHANGED: Updated EnvDTE 8.0.2

* CHANGED: Updated EnvDTE80 8.0.3

* CHANGED: Updated Newtonsoft.Json 12.0.2

* CHANGED: Updated Microsoft.VisualStudio.SDK.EmbedInteropTypes 15.0.27

* CHANGED: StreamJsonRpc 2.0.208

* CHANGED: System.ValueTuple 4.5.0

* CHANGED: NuGet package `vsSBE.CI.MSBuild` is obsolete. Please use new:
           https://www.nuget.org/packages/vsSolutionBuildEvent
           Also new 'tools\' folder instead of 'bin\'.

* KNOWN: Possible Failed Project.Pre/Post-binding: 'Object reference not set to an instance of an object.'
         Issue #43.
         Please enable debug mode, we're waiting for your reports.

* KNOWN: Known problem for VS2019. Build can be started before activation of our plugin.
         This is a feature of the modern VS platform with lazy loading of all plugins.
         Solution:
         Just attach once our [status panel] and this will always activate our plugin before start.

* KNOWN: Known problem when deactivated [Status Panel] from `View` - `Other Windows`.
         Incorrect identifier in previous version produces wrong tool.
         Solution:
         Just close this panel. Then, open it again from `View` - `Other Windows`.

* NOTE: Please note. New releases has been migrated from SourceForge to GitHub Release Page:
        https://github.com/3F/vsSolutionBuildEvent/releases
        https://vssbe.r-eg.net/Downloads/

* NOTE: Here is about SDK10 / SDK15 packages:
        https://vssbe.r-eg.net/doc/Usage/#sdk10--sdk15-versions

@3F 3F mentioned this pull request

Sep 20, 2023

RuralRhapsodi added a commit to RuralRhapsodi/homeassistant that referenced this pull request

Aug 9, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

cyboorgCommit added a commit to cyboorgCommit/read_csv that referenced this pull request

Sep 2, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

FloraKing added a commit to FloraKing/HammerBlade that referenced this pull request

Sep 8, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

davidwhosis added a commit to davidwhosis/Filmakademie that referenced this pull request

Sep 9, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

potewoos added a commit to potewoos/Onetime that referenced this pull request

Oct 17, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

supercomputrae added a commit to supercomputrae/Pokemon that referenced this pull request

Dec 13, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

mifiossless added a commit to mifiossless/folding that referenced this pull request

Dec 28, 2025
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53

replicatedhqe added a commit to replicatedhqe/corequest that referenced this pull request

Jan 9, 2026
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in 3F/vsSolutionBuildEvent#53