我开发了一个简单的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.CommonIDE.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.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost 2016/10/12 15:57:31.170
Visual Studio 2010,2012和2013不会在同一案例中记录任何错误。
仅清除ComponentModelCache会在Visual Studio 2015中删除这些错误。
如何在自定义安装程序中完全删除我的扩展程序?
答案 0 :(得分:0)
这是Visual Studio 2015错误。它是在一个简单的VSIX扩展中复制的: here
更新:在Visual Studio 2017中已修复:
https://connect.microsoft.com/VisualStudio/feedback/details/3106716