Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MvsSln Integration. Back to parent. #53

Merged
merged 5 commits into from
Aug 4, 2019
Merged

MvsSln Integration. Back to parent. #53

merged 5 commits into from
Aug 4, 2019

Conversation

3F
Copy link
Owner

@3F 3F commented Jul 2, 2019

Fixes #42 and more!

Will replace related processing from IsolatedEnv/MSBuild etc. and fully remove old parser.

3F 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
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 added 2 commits July 29, 2019 21:28
Updated `IsolatedEnv` together with latest MvsSln's changes: ValidProjects etc.

This also fixes `Environment.StartupProjectString`, see details in #53
@3F
Copy link
Owner Author

3F commented Jul 29, 2019

okay, I have some note...

Today I noticed bug with Environment.StartupProjectString. And 26fd0ec already contains fixes for this but I have no plan to add separately some patch into master because actually this was fixed as:

foreach(string project in (Array)_st)
{
if(!string.IsNullOrEmpty(project))
{
return sln?.ProjectItems?
.FirstOrDefault(p => p.path == project)
.name;
}

That includes processing via modern MvsSln! While temp native patch requires lot of additional steps because EnvDTE does not provide relative path, and moreover can't easily extract an unified project name, and we also need processing through IVsHierarchy and so on.

return prj.Name; // can be as 'AppName' and 'AppName_2013' for different .sln
// dteProject.Name - "Devenv_2013"
// dteProject.UniqueName - "Devenv\\Devenv_2013.csproj"

// `Dte2.Solution.SolutionBuild.StartupProjects` represents relative path to project file:
// [0] "miniupnpc\\miniupnpc.vcxproj" object {string}
// [0] "StrongDC.vcxproj" object {string}
// https://docs.microsoft.com/en-us/dotnet/api/envdte.solutionbuild.startupprojects

Therefore, I will not waste time on additional irrelevant changes while this PR is actual for us. Just to do something later anyway :)

Also fixed bug when creating new solution for #53 changes.
@3F
Copy link
Owner Author

3F commented Aug 4, 2019

Looks like vsSolutionBuildEvent now is completely integrated with MvsSln. Stable behavior after 5e3814f

@3F 3F changed the title WIP MvsSln Integration. Back to parent. MvsSln Integration. Back to parent. Aug 4, 2019
@3F 3F merged commit f4c14dc into master Aug 4, 2019
@3F 3F deleted the sub/MvsSln/init branch August 4, 2019 18:46
@3F 3F added this to the 0.12.12 milestone 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 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 added the enhancement label Jul 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant