Como: Remover extensões de código gerenciado a partir de documentos

Você poderá remover programaticamente o assembly de personalização de um documento ou pasta de trabalho que faz parte de uma personalização em nível de documento para Microsoft Office o Word ou Excel de Microsoft Office. Os usuários podem abrir os documentos e exibir o conteúdo, em seguida, mas qualquer interface de usuário personalizada (UI) que você adicionar os documentos não aparecerá e seu código não será executado.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para os seguintes aplicativos: Excel 2007 e Excel 2010; Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Você pode remover o assembly de personalização usando um da RemoveCustomization métodos fornecidos pelo Visual Studio Tools for Office runtime. Método usado depende se você deseja remover a personalização em tempo de execução (isto é, executando o código na personalização enquanto a palavra documento ou pasta de trabalho do Excel está aberta), ou se você deseja remover a personalização de um documento de fechado ou um documento que está em um servidor que não tenha de Microsoft Office instalado.

link para vídeo Para uma demonstração de vídeo relacionada, consulte Fazer como i: Anexar ou desanexar um Assembly do VSTO a partir de um documento do Word?.

Para remover o assembly de personalização em tempo de execução

  • Seu código de personalização, chame o Document.RemoveCustomization método (para Word) ou o Workbook.RemoveCustomization método (para o Excel). Este método deve ser chamado somente depois que a personalização não é mais necessária.

    Onde você pode chamar esse método no seu código depende de como sua personalização é usada. Por exemplo, se os clientes usam os recursos da sua personalização até que estejam prontos para enviar o documento para outros clientes que precisam apenas o documento em si (e não a personalização), você pode fornecer algumas interfaces do usuário que chama RemoveCustomization quando o cliente clica proprietário. Como alternativa, se sua personalização preenche o documento com dados quando ele é o primeiro é aberto, mas a personalização não fornece outros recursos são acessados diretamente por clientes, você pode chamar RemoveCustomization assim sua personalização termina de inicializar o documento.

Para remover o assembly de personalização de documentos fechados ou um documento em um servidor.

  1. Em um projeto que não exigem o Microsoft Office, como, por exemplo, um aplicativo de console ou um projeto Windows Forms, adicione uma referência a um dos seguintes assemblies:

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (se os destinos do projeto de .NET Framework 4).

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (se os destinos do projeto a.NET Framework 3.5).

  2. Adicione o seguinte Imports ou using à parte superior do seu arquivo de código.

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  3. Chamar estática RemoveCustomization método de ServerDocument de classe e especifique o caminho do documento de solução para o parâmetro.

    O exemplo de código a seguir pressupõe que você está removendo a personalização de um documento chamado WordDocument1.docx que está na área de trabalho.

    Dim documentPath As String = System.Environment.GetFolderPath( _
        Environment.SpecialFolder.Desktop) & "\WordDocument1.docx"
    Dim runtimeVersion As Integer = 0
    
    Try
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath)
        If runtimeVersion = 3 Then
            ServerDocument.RemoveCustomization(documentPath)
            System.Windows.Forms.MessageBox.Show("The customization has been removed.")
        End If
    Catch ex As FileNotFoundException
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.")
    Catch ex As IOException
        System.Windows.Forms.MessageBox.Show("The specified document is read-only.")
    Catch ex As InvalidOperationException
        System.Windows.Forms.MessageBox.Show("The customization could not be removed." & _
            vbLf & ex.Message)
    End Try
    
    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. Compile o projeto e executar o aplicativo no computador onde você deseja remover a personalização. O computador deve ter o Visual Studio 2010 Tools for Office Runtime instalado.

Consulte também

Tarefas

Como: Anexar extensões de código gerenciado aos documentos

Conceitos

Gerenciamento de documentos em um servidor usando a classe ServerDocument