forked from mrexodia/MvsSln
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.txt
144 lines (112 loc) · 7.95 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
- - - -
MvsSln :: https://github.com/3F/MvsSln
_ _ _ _
[v2.1] 2018.08.05
* FIXED: Fixed bug 'The node is not parented by this object'
When IXProject.RemoveImport is used for `Import` elements inside `ImportGroup`.
Related issue: https://github.com/3F/DllExport/issues/77
* NEW: Added `IXProject.AddImport(IEnumerable<ImportElement> elements, ...`
To add 'import' elements inside ImportGroup.
* CHANGED: IXProject changes:
* +`IXProject.PId` an unique identifier for project (not instance).
* +`IXProject.GetRelativePath(string path)` Makes relative path from used project.
* +`IXProject.AddImport(ImportElement element);`
* Compatible signature update: `bool RemoveImport(ImportElement element, bool holdEmptyGroup = false)`
* CHANGED: Additional .ctors for XProject:
* +`XProject()`
* +`XProject(string file)`
* +`XProject(string file, IDictionary<string, string> properties)`
* +`XProject(Project prj)`
[v2.0] 2017.10.05
* NEW: Updated architecture now provides 2 types of handlers - readers (ISlnHandler) and writers (IObjHandler).
You also can use your custom reader or writer, just implement an `ISlnHandler` or `IObjHandler`:
```
class MyReader: LAbstract, ISlnHandler { ... }
class MyWriter: WAbstract, IObjHandler { ... }
```
Read the documentation for details.
* NEW: MvsSln now also may provide map of analyzed data. Parser will expose map through list of `ISection` for each line.
To enable this, define a bit 0x0080 for type of operations to parser.
This helps to get flexible control between readers and any writers.
Example of using writer `WSolutionConfigurationPlatforms` together with calculated map:
```
var data = new List<IConfPlatform>() {
new ConfigSln("Debug", "Any CPU"),
new ConfigSln("Release_net45", "x64"),
new ConfigSln("Release", "Any CPU"),
};
var whandlers = new Dictionary<Type, HandlerValue>() {
[typeof(LSolutionConfigurationPlatforms)] = new HandlerValue(new WSolutionConfigurationPlatforms(data)),
};
using(var w = new SlnWriter("<path_to>.sln", whandlers)) {
w.Write(map);
}
```
Read the documentation for details.
* NEW: Implemented new writer `WProject`.
* NEW: Implemented new writer `WProjectConfigurationPlatforms`.
* NEW: Implemented new writer `WSolutionConfigurationPlatforms`.
* NEW: Implemented new writer `WVisualStudioVersion`.
* NEW: Implemented new writer `WProjectSolutionItems`.
* NEW: Implemented new reader `LVisualStudioVersion`.
* NEW: Implemented new reader `LProjectSolutionItems`.
* FIXED: Fixed possible bug when SlnItems.All &~ SlnItems.Projects.
* FIXED: Fixed possible null with PropertyItem.evaluatedValue:
MS describes this as 'the evaluated property value, which is never null'
But, this is not true: .NETFramework\v4.0\Microsoft.Build.dll - Version=4.0.0.0, PublicKeyToken=b03f5f7f11d50a3a
* FIXED: Fixed possible null for `IXProject.ProjectName` when project does not contain this property.
* CHANGED: `IXProject.ProjectGuid` now will return value from ProjectItem.pGuid if project file does not contain an Guid at all.
It's actual for SDK-based projects.
* CHANGED: SlnParser now can be initialized without handlers at all.
```
ISlnContainer sln = new SlnParser(false);
sln.SlnHandlers.Register(new LMySpec());
...
// to reset and register all default:
sln.SetDefaultHandlers();
```
* CHANGED: Updated SlnItems: added `Map` item to create map when processing sln data.
* CHANGED: `IsolatedEnv.Load(...)` splitted and marked as virtual to leave the final implementation for user,
to avoid problems like in Issue #1 etc.
* CHANGED: Updated abstract layer with some types from ISlnResult & ISlnResultSvc.
* CHANGED: Updated GetNuTool v1.6.1.10480_bde3e50 & hMSBuild v1.2.2.62992_3ee58c3.
* KNOWN_PROBLEM: C++ projects and their initialization for Visual Studio 2017. Issue #1.
[v1.0.1] 2017.07.21
* FIXED: Fixed possible bug with already loaded project in collection when initializing new instance of Sln.
* FIXED: Fixed `IXProject.RemoveProperty(PropertyItem property)` & `IXProject.RemoveItem(Item item)` when selected items or properties does not exist.
* FIXED: Fixed possible exception when disposing object /IsolatedEnv.
* FIXED: Fixed possible NullReferenceException for IsolatedEnv + Improved layer of IXProject.
* NEW: Added `localScope` flag for `GetProperty(string name, bool localScope = true)`.
If true, will return default value for any special and imported properties type. It's important to use with `RemoveProperty(...)` etc.
* NEW: Added `SlnItems.LoadMinimalDefaultData` flag to load only minimal default data. For example, the only one configuration for each project.
And its alias `EnvWithMinimalProjects` - To prepare environment with minimal loaded projects.
* NEW: Added `IXProject.Reevaluate()` - To reevaluate data of project if necessary.
For example, if project contains 2 or more same properties by name:
After `RemoveProperty(...)` the second property still will be unavailable for `GetProperty(...)`
because its node does not contain this at all. Use this to update nodes, or `revalue` flag with updated `RemoveProperty(...)`
* NEW: Added `IXProject.RemoveImport(ImportElement element)` - For additional control of removing elements via IXProject.
* CHANGED: `IXProject.AddImport(...)` methods - now, does not have any restriction for adding new elements.
* CHANGED: `AssemblyName` from Projects.Item has been wrapped by `AsmData` for additional work with public key tokens etc.
* CHANGED: The result of `IXProject.GetImport(...)` has been wrapped by `ImportElement` to avoid using MBE for end user.
* CHANGED: Other list of changes:
* `+IXProject.ProjectPath`
* `+IXProject.ProjectFullPath`
* `+IXProject.GlobalProperties`
* `+IXProject.Save(string path, Encoding enc)`
* `+IXProject.GetImport(string project, string label, bool eq = false)`
* `+IXProject.GetImports(string project = null)`
* `+IXProject.GetImports(string project, string label, bool eq = false)`
* `+IXProject.AddReference(string fullpath, bool local, bool? embed = null, bool? spec = null)`
* `+IEnvironment.LoadMinimalProjects()`
* CHANGED: Compatible update of signatures:
* `~IXProject.AddImport(string target, bool checking, string label = null)`
* `~IXProject.AddImport(string target, string condition, string label = null)`
* `~IXProject.GetProperty(string name, bool localScope = true)`
* `~IXProject.RemoveProperty(string name, bool revalue = false)`
* `~IXProject.RemoveProperty(PropertyItem property, bool revalue = false)`
* `~IEnvironment.LoadProjects(IEnumerable<ProjectItemCfg> pItems = null)`
* CHANGED: Incompatible minor changes with result of `ProjectImportElement GetImport(string project = null)`.
It has been wrapped by `ImportElement` to avoid using MBE.
[v1.0] 2017.07.07
* Initial public release.
A tool for complex support of the Visual Studio .sln files and its projects.