Версия сборки Microsoft.Office.Interop.Word выше указанной - PullRequest
5 голосов
/ 31 июля 2011

В чем причина следующей ошибки:

Ошибка 12 Assembly 'Microsoft.Office.Interop.Word, Version = 14.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c «использует» office, Версия = 14.0.0.0, Культура = нейтральная, PublicKeyToken = 71e9bce111e9429c ', версия которой выше, чем у сборки, на которую указывает ссылка', Версия = 12.0.0.0, Культура = нейтральная, PublicKeyToken = 71e9bce111e9429c 'c: \ Program Files \ Microsoft Visual Studio 10.0\ Инструменты Visual Studio для Office \ PIA \ Office14 \ Microsoft.Office.Interop.Word.dll WindowsFormsApplication1

мой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Word;
using Application = Microsoft.Office.Interop.Word.Application;
using DataTable = System.Data.DataTable;
using Document = Microsoft.Office.Interop.Word.Document;
using Microsoft.Office;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var wordApp = new Application { Visible = false };
            object objMissing = Missing.Value;
            Document wordDoc = wordApp.Documents.Add(ref objMissing, ref objMissing, ref objMissing, ref objMissing);

            wordApp.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageFooter;
            wordApp.Selection.TypeParagraph();
            String docNumber = "1";
            String revisionNumber = "0";
            wordApp.Selection.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
            wordApp.ActiveWindow.Selection.Font.Name = "Arial";
            wordApp.ActiveWindow.Selection.Font.Size = 8;
            wordApp.ActiveWindow.Selection.TypeText("Document #: " + docNumber + " - Revision #: " + revisionNumber);
            wordApp.ActiveWindow.Selection.TypeText("\t");
            wordApp.ActiveWindow.Selection.TypeText("\t");
            wordApp.ActiveWindow.Selection.TypeText("Page ");
            Object CurrentPage = WdFieldType.wdFieldPage;
            wordApp.ActiveWindow.Selection.Fields.Add(wordApp.Selection.Range, ref CurrentPage, ref objMissing, ref objMissing);
            wordApp.ActiveWindow.Selection.TypeText(" of ");
            Object TotalPages = WdFieldType.wdFieldNumPages;
            wordApp.ActiveWindow.Selection.Fields.Add(wordApp.Selection.Range, ref TotalPages, ref objMissing, ref objMissing);
            wordApp.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;

            object c = "d:\\1.doc";
            wordDoc.Paragraphs.LineSpacing = 8;

            Paragraph wp = wordDoc.Paragraphs.Add(ref objMissing);
            wp.Range.Text += richTextBox1.Text;

            wordDoc.SaveAs(ref c, ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
               ref objMissing
               , ref objMissing, ref objMissing, ref objMissing, ref objMissing, ref objMissing,
               ref objMissing, ref objMissing
               , ref objMissing, ref objMissing);
            (wordDoc).Close(ref objMissing, ref objMissing, ref objMissing);
            (wordApp).Quit(ref objMissing, ref objMissing, ref objMissing);

        }
    }
}

Ответы [ 4 ]

6 голосов
/ 08 августа 2011

Похоже, ваш код ссылается на одну версию Office, но пытается использовать другую версию.Это довольно распространенная проблема, поскольку используется множество различных версий Office.

Когда мне приходилось использовать Office Interop, я избегал этой проблемы, используя Late Binding вместо Early Binding.Это означает, что я не добавляю ссылку на определенную версию Office, и мой код будет работать с любой последней версией, если я не использую функцию или аналог, которые существуют только в определенных версиях.

Эта статья содержит базовые учебные пособия, демонстрирующие разницу между поздним и ранним связыванием: Связывание для серверов автоматизации Office с Visual C # .NET

Я бы также предложил посмотреть эту статью для получения дополнительной информации.информация: Использование раннего и позднего связывания в автоматизации

2 голосов
/ 03 мая 2012

У меня была эта проблема, когда я обновил свой проект с VS2005 до VS2010. Я думаю, Visual Studio автоматически обновляет DLL, если есть более новая версия.

Я отсоединил .dll и удалил, затем снова добавил, но нашел правильную версию (в данном случае 12.0.0.0), и проблема была решена. Удаление из каталога Bin должно работать, но если нет, найдите dll или имя ссылки в проекте, может быть, в web.config и удалите, оно должно само обновиться.

Кстати, сначала я только не ссылался на файлы Office.Interop dll, но после того, как он продолжал давать сбой, я удалил dll с именем office.dll и добавил, что это сработало. Должен искать это тоже.

Удачи всем.

2 голосов
/ 09 августа 2011

У меня была такая же проблема, на вкладке «Добавить ссылки» .Net можно добавить Microsoft.Office.Interop.Word Version = 12.0.0.0 вместо Microsoft.Office.Interop.Word, Version = 14.0.0.0. не забудьте удалить версию 14 из списка литературы до этого. это решило мою проблему.

0 голосов
/ 25 октября 2012

просто удалите ссылку на более высокую версию взаимодействия и добавьте версию, которая работала, тогда все будет хорошо

...