从文档中删除托管代码扩展

你可以以编程方式从文档或工作簿中删除自定义程序集,该程序集是Microsoft 办公室 Word 或 Microsoft 办公室 Excel 的文档级自定义的一部分。 然后,用户可以打开文档并查看内容,但添加到文档的任何自定义用户界面(UI)将不会显示,并且代码不会运行。

适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

可以使用 Visual Studio Tools for 办公室 运行时提供的方法之一RemoveCustomization删除自定义程序集。 使用的方法取决于是要在运行时删除自定义项(也就是说,通过在 Word 文档或 Excel 工作簿打开时在自定义项中运行代码),还是要从关闭的文档中删除自定义项,还是要从未安装Microsoft 办公室的服务器上删除自定义项。

在运行时删除自定义程序集

  1. 在自定义代码中,调用 RemoveCustomization 方法(适用于 Word)或 RemoveCustomization 方法(对于 Excel)。 只有在不再需要自定义项之后,才应调用此方法。

    在代码中调用此方法的位置取决于自定义的使用方式。 例如,如果客户使用自定义项的功能,直到他们准备好将文档发送给只需要文档本身(而不是自定义项)的其他客户端,则可以在客户单击文档时提供一些调用 RemoveCustomization 的 UI。 或者,如果自定义项在首次打开文档时使用数据填充文档,但自定义项不提供客户直接访问的任何其他功能,则可以在自定义项完成初始化文档后立即调用 RemoveCustomization。

从关闭的文档或服务器上的文档中删除自定义程序集

  1. 在不需要Microsoft 办公室的项目(例如控制台应用程序或Windows 窗体项目)中,添加对 Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll 程序集的引用。

  2. 将以下 Importsusing 语句添加到代码文件的顶部。

    using Microsoft.VisualStudio.Tools.Applications;
    
  3. 调用类的ServerDocument静态RemoveCustomization方法,并指定参数的解决方案文档路径。

    下面的代码示例假定从桌面上名为 WordDocument1.docx 的文档中删除自定义项。

    string documentPath = System.Environment.GetFolderPath(
        Environment.SpecialFolder.Desktop) + @"\WordDocument1.docx";
    int runtimeVersion = 0;
    
    try
    {
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath);
    
        if (runtimeVersion == 3)
        {
            ServerDocument.RemoveCustomization(documentPath);
            System.Windows.Forms.MessageBox.Show("The customization has been removed.");
        }
    }
    catch (FileNotFoundException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.");
    }
    catch (IOException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document is read-only.");
    }
    catch (InvalidOperationException ex)
    {
        System.Windows.Forms.MessageBox.Show("The customization could not be removed.\n" +
            ex.Message);
    }
    
  4. 生成项目并在要删除自定义项的计算机上运行应用程序。 计算机必须安装 Visual Studio 2010 Tools for 办公室 runtime。