[VSX] Pourquoi ma ToolWindow n'apparait pas dans mon addin Visual Studio ?
Lorsque l'on développe un addin pour Visual Studio, on apprécie de pouvoir créer des fenêtres qui viennent se rajouter aux fenêtres existantes. Pour cela, il suffit d'utiliser le code suivant qui va rechercher si votre fenêtre est déjà créée (auquel cas, une nouvelle instance va être utilisée):
private void ShowToolWindow(IEnumerable<Property> propertiesAndDescription)
{
// Get the instance number 0 of this tool window. This window is single instance so this instance
// is actually the only one.
// The last flag is set to true so that if the tool window does not exists it will be created.
ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true);
if ((null == window) || (null == window.Frame))
{
throw new NotSupportedException("Can not create tool window.");
}
var windowFrame = (IVsWindowFrame)window.Frame;
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
}
Cependant, si vous exécutez ce code dans un de vos package/addin, vous remarquerez que l'exception se déclenche car l'objet window sera null. Comment empéchez cela ? Et bien tout simplement en pensant à rajouter l'attribut suivant sur la classe de votre package:
[ProvideToolWindow(typeof(MyToolWindow))]
Et là, le tour est joué
Bonne extensibilité à vous
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :