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

More simplified work with solution folders #8

Closed
3F opened this issue Mar 1, 2019 · 1 comment
Closed

More simplified work with solution folders #8

3F opened this issue Mar 1, 2019 · 1 comment
Milestone

Comments

@3F
Copy link
Owner

3F commented Mar 1, 2019

new SolutionFolder
(
	new ProjectItem()
	{
		pType = Guids.SLN_FOLDER,
		name = "MyFolder1",
		path = "MyFolder1", // recommended to be same
		pGuid = Guid.NewGuid().ToString()
	},
	new List<RawText>()
	{
		".gnt\\gnt.core",
		".gnt\\packages.config",
		// ...
	}
),
...

too verbose ...

Related issue: #6

@3F 3F added the enhancement label Mar 1, 2019
3F added a commit that referenced this issue Mar 30, 2019
```
ProjectItem(string name, ProjectType pType)
ProjectItem(string pGuid, string name, ProjectType pType)
ProjectItem(string name, string path, ProjectType pType, string slnDir = null)
ProjectItem(string pGuid, string name, string path, ProjectType pType, string slnDir = null)
ProjectItem(string pGuid, string name, string path, string pType, string slnDir = null)
```

Also:

* `ProjectItem.ProjectTypeBy(string guid)` marked as **Obsolete**.
* Added tests for WNestedProjects handler.
3F added a commit that referenced this issue Apr 1, 2019
…on. Issue #8

+RawText

Polynom function extracted as `HashPolynom` + `CalculateHashCode`
@3F
Copy link
Owner Author

3F commented Apr 1, 2019

Fully updated constructors and implemented native object comparison for ProjectItem + SolutionFolder + RawText. Polynom function: extracted as HashPolynom + CalculateHashCode

Now it should be really easy to create/modify/or just use parsed folders, projects, and other.

Safely compare anything:

if(new ProjectItem(...) == new ProjectItem(...)) { ... }
if(new SolutionFolder(...) == new SolutionFolder(...)) { ... }
if(new RawText(...) == new RawText(...)) { ... }
if(new ConfigItem(...) == new ConfigItem(...)) { ... }
if((RawText)"data" == (RawText)"data") { ... }

Use Subdirectories:

new SolutionFolder("dir1", 
    new SolutionFolder("dir2", 
        new SolutionFolder("dir3", "hMSBuild.bat", "DllExport.bat")
    )
);
...
new SolutionFolder("{EE7DD6B7-56F4-478D-8745-3D204D915473}", "MyFolder2", dir1, ".gnt\\gnt.core");
...

Projects and Folders:

new ProjectItem("Project1", ProjectType.Cs);
new ProjectItem("Project1", ProjectType.Cs, new SolutionFolder("dir1"));
new ProjectItem("Project2", ProjectType.Vc, "path 1");
new ProjectItem("{EE7DD6B7-56F4-478D-8745-3D204D915473}", "Project1", ProjectType.Cs, dir2);
...

See related unit tests!

@3F 3F closed this as completed Apr 1, 2019
@3F 3F added this to the v2.2 milestone Apr 1, 2019
@3F 3F mentioned this issue Apr 1, 2019
3F added a commit that referenced this issue Apr 7, 2019
* FIXED: Fixed possible error when loading all found projects:
        'An equivalent project is already present in the project collection, ...'

* NEW: Implemented R/W Handlers for `NestedProjects` section. Issue #7

* NEW: Implemented new R/W handlers for `ExtensibilityGlobals` section.
        Use `ExtItems = 0x0400` flag to activate it.

* NEW: Implemented native object comparison for ProjectItem, SolutionFolder, and RawText.
        ```
        ~
        if(new ProjectItem(...) == new ProjectItem(...)) { ... }
        if(new SolutionFolder(...) == new SolutionFolder(...)) { ... }
        if(new RawText(...) == new RawText(...)) { ... }
        if(new ConfigItem(...) == new ConfigItem(...)) { ... }
        if((RawText)"data" == (RawText)"data") { ... }
        ```

* NEW: New constructors for `SolutionFolder`. Issue #8:
    ```
    +SolutionFolder(string fGuid, string name, IEnumerable<RawText> items)
    +SolutionFolder(Guid fGuid, string name)
    +SolutionFolder(string fGuid, string name, SolutionFolder parent, params RawText[] items)
    +SolutionFolder(string fGuid, string name, SolutionFolder? parent, IEnumerable<RawText> items)
    +SolutionFolder(string name, params RawText[] items)
    +SolutionFolder(string name, IEnumerable<RawText> items)
    +SolutionFolder(string name, SolutionFolder parent, params RawText[] items)
    +SolutionFolder(string name, SolutionFolder parent, IEnumerable<RawText> items)
    +SolutionFolder(ProjectItem pItem, params RawText[] def)
    +SolutionFolder(SolutionFolder folder)
    ```

* NEW: New constructors for `ProjectItem` (part of Issue #8):
    ```
    +ProjectItem(string name, ProjectType pType, SolutionFolder? parent = null)
    +ProjectItem(string name, ProjectType pType, string path, SolutionFolder? parent = null, string slnDir = null)
    +ProjectItem(string pGuid, string name, ProjectType pType, SolutionFolder? parent = null)
    +ProjectItem(string pGuid, string name, ProjectType pType, string path, SolutionFolder? parent = null, string slnDir = null)
    +ProjectItem(string pGuid, string name, string path, string pType, string slnDir = null)
    +ProjectItem(ProjectItem prj)
    ```

* CHANGED: `ProjectItem.ProjectTypeBy(string guid)` marked as [Obsolete] and can be removed in new versions later.
            You can use new methods when you need:
            * `Guids.ProjectTypeBy(string guid)`
            * `Guids.GuidBy(ProjectType type)`

* CHANGED: Updated package tools hMSBuild 2.0 & GetNuTool 1.7.
           Release notes:
            * https://github.com/3F/GetNuTool/releases/tag/v1.7
            * https://github.com/3F/hMSBuild/releases/tag/v2.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant