Word 2007 надстройка не работает с Word 2010 - PullRequest
0 голосов
/ 27 марта 2011

Я написал надстройку для Word 2007 на C #.Для распространения надстройки я использовал установщик ClickOnce.Однако эта надстройка не работает с Word 2010. Она выдает следующую ошибку в файле vsto.log:

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   at Microsoft.VisualStudio.Tools.Office.Word.Internal.IWordHostItemProviderProxy..ctor(IHostItemProviderExtendedContract hostItemProvider)
   at Microsoft.VisualStudio.Tools.Office.Word.Internal.IWordHostItemProviderProxy.GetProxy(IHostItemProviderExtendedContract contract)
   at Microsoft.VisualStudio.Tools.Office.Word.Internal.LocalWordServiceProvider.GetService(Type serviceType)
   at Microsoft.VisualStudio.Tools.Applications.Internal.LocalServiceProvider.System.IServiceProvider.GetService(Type serviceType)
   at Microsoft.VisualStudio.Tools.Office.EntryPointComponentBase.Microsoft.VisualStudio.Tools.Applications.Runtime.IEntryPoint.Initialize(IServiceProvider hostContext)
   at Microsoft.VisualStudio.Tools.Applications.AddInAdapter.ExecutePhase(ExecutionPhases executionPhases)
   at Microsoft.VisualStudio.Tools.Office.Internal.OfficeAddInAdapterBase.InitializeEntryPointsHelper()

Хотя я понимаю, что между Microsoft.Office существует несовпадение версий.Interop.Word dll ищет надстройку и ту, которая доступна в системе с Word 2010, я понятия не имею, как я мог бы решить эту проблему.Я немного поискал в Google, но ничего интересного не нашел.Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 01 августа 2011

Мне удалось отследить проблему в конце. Извините, что не пишу об этом раньше. Кажется, я ссылался на неправильные библиотеки вместо тех, которые вызвали эту проблему. Проблема была исправлена ​​после внесения изменений.

0 голосов
/ 25 июля 2011

Первая проверка PIA (основная сборка взаимодействия) установлена ​​в вашей системе с использованием кода ниже

   bool IsPrimaryInteropAssembliesInstalled()
    {
        try
        {
            if (Assembly.Load("Policy.11.0.Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") != null)
            {
                return true;
            }
        }
        catch (Exception)
        {
        }
        return false;
    }

Затем скачайте офисную PIA из http://www.microsoft.com/download/en/details.aspx?id=18346. и запустите код ниже

void InstallPrimaryInteropAssemblies()
    {
        try
        {
            string str = "path\o2007pia.msi";
            System.Diagnostics.Process process = new System.Diagnostics.Process
            {
                StartInfo = { FileName = str }
            };
            process.Start();
            while (!process.HasExited)
            {
                System.Threading.Thread.Sleep(0x3e8);
            }
        }
        catch (Exception exception)
        {

        }
    }
0 голосов
/ 28 марта 2011

Я полагаю, что вам нужно отключить проверку конкретной версии для этих сборок слов в проекте "щелкнуть один раз".

...