We have made several breaking changes for the next version of Project System Extensibility. Our goal with these changes is to provide a consistent assembly name over releases, simplified namespaces, and new features. Below is a list of these changes.
We have renamed all of our assemblies to the following:
Old Name | New Name |
---|---|
Microsoft.VisualStudio.ProjectSystem.v14Only | Microsoft.VisualStudio.ProjectSystem |
Microsoft.VisualStudio.ProjectSystem.VS.v14Only | Microsoft.VisualStudio.ProjectSystem.VS |
Microsoft.VisualStudio.ProjectSystem.Utilities.14.0 has been removed, and its contents merged into the other 2 assemblies.
Namespaces have been heavily refactored.
New Namespaces |
---|
Microsoft.VisualStudio.ProjectSystem |
Microsoft.VisualStudio.ProjectSystem.Build |
Microsoft.VisualStudio.ProjectSystem.Debug |
Microsoft.VisualStudio.ProjectSystem.Properties |
Microsoft.VisualStudio.ProjectSystem.References |
Microsoft.VisualStudio.ProjectSystem.VS |
Microsoft.VisualStudio.ProjectSystem.VS.Build |
Microsoft.VisualStudio.ProjectSystem.VS.Debug |
Microsoft.VisualStudio.ProjectSystem.VS.Properties |
In VS2015 update 1 we added some '2' versions of various interfaces. These interfaces have been merged into the original version of the interface.
Interface Source | Interface Target |
---|---|
IProjectService2 |
IProjectService |
IProjectTreeFactory2 |
IProjectTreeFactory |
IVsLoggerProvider2 |
IVsLoggerProvider |
IBuildProject2 |
IBuildProject |
IProjectItemProvider2 * |
IProjectItemProvider |
* the addition methods from IProjectItemProvider2
where added onto ProjectItemProviderBase
New | Description |
---|---|
IProjectTreePropertiesProvider |
New extension point for modifying IProjectTree |
NamedIdentity |
Used for naming and identifiying IProjectValueDataSource |
ProjectTreeFlags |
Replacement for IProjectTree.Capabilities |
IProjectDynamicLoadComponent |
New extension point for components that support being dynamically loaded/unloaded |
IProjectCapabilitiesScope |
Scopes the current capabilities to support dynamic capabilities |
Removed | Description |
---|---|
UnconfiguredProjectAutoLoadAttribute |
Replaced by ProjectAutoLoadAttribute |
IProjectTreeModifier |
Replaced by IProjectTreePropertiesProvider |
WeakKeyDictionary |
- |
IProjectCapabilityCheckProvider |
Replaced by IProjectCapabilitiesScope |
ProjectCapabilitiesKeyPropertiesProvider |
- |
IProjectValueDataSource<T>.DataSourceKey |
Appears on IProjectValueDataSource |
IProjectValueDataSource<T>.DataSourceVersion |
Appears on IProjectValueDataSource |
UnconfiguredProject.GetCapabilitiesAsync |
replaced by UnconfiguredProject.Capabilities |
ConfiguredProject.GetCapabilitiesAsync |
replaced by ConfiguredProject.Capabilities |
Old Name | New Name |
---|---|
ProjectService |
IProjectService |
UnconfiguredProjectAutoLoad2Attribute |
ProjectAutoLoadAttribute |
OrderPrecedenceAttribute |
OrderAttribute |
IThreadHandling |
IProjectThreadingService |
IThreadHandling.AsyncPump |
IProjectThreadingService.JoinableTaskFactory |
IProjectTree.Capabilities |
IProjectTree.Flags |
IProjectReloader.ReloadIfCapabilitiesChangedAsync |
IProjectReloader.ReloadIfNecessaryAsync |
- Dynamic capability support added. This makes capabilities a part of the data flow. More information can be found here.
- The contract for
ProjectAutoLoadAttribute
(previouslyUnconfiguredProjectAutoLoadAttribute
) has changed fromvoid Initialize()
toTask Initialize()
IProjectThreadingService.SwitchToUIThread
is now an extension methodIProjectTree.Flags
is a new structProjectTreeFlags
which is a hybrid ofenum
andImmutableHashSet<string>
. Most commonly used flags are found inenum ProjectTreeFlags.Common
.ExportCommandGroupAttribute.Group
is now aGuid
(formerlystring
). The constructor accepts either a string or guid.- Implementation of
IVsProject.IsDocumentInProject
changed to return not found for items ofDP2_NonMember
and below. Previously it would return true for excluded items underneath the project directory.- You can use
IVsHierarchy.ParseCanonicalName
to check if an item is under the project directory, but may not be included.
- You can use
IProjectSubscriptionService.XXXBlock
marked obsolete. UseIProjectSubscriptionService.XXXSource.SourceBlock
instead.IProjectValueDataSource.DataSourceKey
changed fromGuid
to a new classNamedIdentity
. This allows for naming the data source with a string.StaticGlobalPropertiesProviderBase
constructor now takes only anIProjectCommonServices
.UnconfiguredProject.Capabilities
andConfiguredProject.Capabilities
type changed fromIImmutableSet<string>
toIProjectCapabilitiesScope