【问题标题】:What is proper way to uninstall extension from MSI?从 MSI 卸载扩展的正确方法是什么?
【发布时间】:2018-08-14 09:33:08
【问题描述】:

我开发了一个简单的 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 仍然尝试从未安装的扩展加载组件。日志包含以下错误:

错误仍然无法加载 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

ERROR 找不到路径的一部分 '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 中的这些错误。

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

【问题讨论】:

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


    【解决方案1】:

    这是一个 Visual Studio 2015 错误。它在一个简单的 VSIX 扩展中重现: https://connect.microsoft.com/VisualStudio/feedback/details/3106716

    更新:已在 Visual Studio 2017 中修复:
    https://developercommunity.visualstudio.com/content/problem/66084/mef-cache-do-not-updates-when-assembly-version-cha.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-18
      • 2020-02-13
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      相关资源
      最近更新 更多