从MSI卸载扩展的正确方法是什么?

时间:2016-10-12 16:33:44

标签: visual-studio-2015 windows-installer mef vsix

我开发了一个简单的Visual Studio包,它使用MEF声明了一个标记类型:

[Export(typeof(EditorFormatDefinition))]
[Name("MyMarkerDefinition")]
[UserVisible(true)]
public class MyMarkerDefinition : MarkerFormatDefinition
{
    // ...
}

安装程序(它不是VSIX)将扩展程序复制到程序文件中:

C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\

然后触摸(更改修改日期)" extensions.configurationchanged"该文件夹中的文件,因此Visual Studio扫描Extensions文件夹并加载我的扩展名。

一切正常,但是当我卸载扩展程序(删除文件夹并触摸" extensions.configurationchanged"再次)时,Visual Studio仍尝试从uninistalled扩展程序加载组件。该日志包含以下错误:

  

错误仍然无法加载MEF组件DLL:无法加载文件或程序集' YourAssembly.dll'   或其中一个依赖项。该系统找不到指定的文件。   C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL STUDIO 14.0 \ COMMON7 \ IDE \ EXTENSIONS \ YourExtension \ YourAssembly.dll   Microsoft.VisualStudio.CommonID​​E.ExtensibilityHosting.VsShellComponentModelHost 2016/10/12 15:57:30.669

     

错误无法找到路径的一部分   ' C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL STUDIO 14.0 \ COMMON7 \ IDE \ EXTENSIONS \ YourExtension \ YourAssembly.dll'。   C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL STUDIO 14.0 \ COMMON7 \ IDE \ EXTENSIONS \ YourExtension \ YourAssembly.dll   Microsoft.VisualStudio.CommonID​​E.ExtensibilityHosting.VsShellComponentModelHost 2016/10/12 15:57:31.170

Visual Studio 2010,2012和2013不会在同一案例中记录任何错误。

仅清除ComponentModelCache会在Visual Studio 2015中删除这些错误。

如何在自定义安装程序中完全删除我的扩展程序?

1 个答案:

答案 0 :(得分:0)

这是Visual Studio 2015错误。它是在一个简单的VSIX扩展中复制的: here

更新:在Visual Studio 2017中已修复:
https://connect.microsoft.com/VisualStudio/feedback/details/3106716