从文档中删除托管代码扩展
你可以以编程方式从文档或工作簿中删除自定义程序集,该程序集是Microsoft 办公室 Word 或 Microsoft 办公室 Excel 的文档级自定义的一部分。 然后,用户可以打开文档并查看内容,但添加到文档的任何自定义用户界面(UI)将不会显示,并且代码不会运行。
适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
可以使用 Visual Studio Tools for 办公室 运行时提供的方法之一RemoveCustomization
删除自定义程序集。 使用的方法取决于是要在运行时删除自定义项(也就是说,通过在 Word 文档或 Excel 工作簿打开时在自定义项中运行代码),还是要从关闭的文档中删除自定义项,还是要从未安装Microsoft 办公室的服务器上删除自定义项。
在运行时删除自定义程序集
在自定义代码中,调用 RemoveCustomization 方法(适用于 Word)或 RemoveCustomization 方法(对于 Excel)。 只有在不再需要自定义项之后,才应调用此方法。
在代码中调用此方法的位置取决于自定义的使用方式。 例如,如果客户使用自定义项的功能,直到他们准备好将文档发送给只需要文档本身(而不是自定义项)的其他客户端,则可以在客户单击文档时提供一些调用
RemoveCustomization
的 UI。 或者,如果自定义项在首次打开文档时使用数据填充文档,但自定义项不提供客户直接访问的任何其他功能,则可以在自定义项完成初始化文档后立即调用 RemoveCustomization。
从关闭的文档或服务器上的文档中删除自定义程序集
在不需要Microsoft 办公室的项目(例如控制台应用程序或Windows 窗体项目)中,添加对 Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll 程序集的引用。
将以下 Imports 或 using 语句添加到代码文件的顶部。
调用类的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); }
生成项目并在要删除自定义项的计算机上运行应用程序。 计算机必须安装 Visual Studio 2010 Tools for 办公室 runtime。