Неожиданный сбой задачи SetOffice2007AddInRegistration

Я создал новый проект C#, используя шаблон надстройки VSTO Word 2013 и 2016 в Visual Studio 2015. Я не вносил никаких изменений в автоматически сгенерированный код проекта, чтобы посмотреть, как он будет работать. быть построен на моем сервере сборки TFS 2015. Сборка выдала следующую ошибку:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets (315, 0)
Неожиданный сбой задачи SetOffice2007AddInRegistration. System.Runtime.InteropServices.COMException (0x800703F0): была предпринята попытка сослаться на несуществующий токен. (Исключение из HRESULT: 0x800703F0) в Microsoft.VisualStudio.Tools.Office.Runtime.Interop.VSTOEENativeMethods.GetVSTOEEHandle() в Microsoft.VisualStudio.Tools.Office.Runtime.Interop.VSTOEENativeMethods.GetSolutionMetadata(String SolutionInfoString) в Microsoft.VisualStudio. Tools.Applications.OfficeSolutionMetadata..ctor(String manifestLocation) в Microsoft.VisualStudio.Tools.Office.Runtime.AddInRegistryKeyManager.RegisterAddIn(Uri manifestUri, String addInName, String officeApplication, String friendlyName, String description, Int32 loadBehavior, String CompatibleFrameworkXML, Boolean runLocal ) в Microsoft.VisualStudio.Tools.Office.BuildTasks.SetOffice2007AddInRegistration.Execute() в Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() в Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext( )

Служба сборки запускается как учетная запись домена, которая является администратором Windows Server 2012, на котором установлена ​​служба сборки. На этом сервере Windows установлены Visual Studio 2015 и Office 2016.

Когда я создаю проект в Visual Studio 2015 на своем локальном компьютере, у меня вообще нет ошибок. Пожалуйста, помогите, если у вас возникла такая же проблема в вашей работе. Спасибо.


person MBK    schedule 27.04.2016    source источник


Ответы (2)


Эта проблема не связана с TFS.

Но я нашел решение от Йенса по адресу этот веб-сайт, который должен помочь вам:

"

Согласно библиотеке MSDN SetOffice2007AddInRegistration «Определяет задачу MSBuild, которая создает или удаляет разделы реестра, необходимые для запуска или удаления надстройки для системы Microsoft Office 2007». Поэтому я проверил реестр и выяснил, что единственные записи, которые все еще присутствовали, были в разделе HKEY_CURRENT_USER\Software\Microsoft\VSTO\SolutionMetadata, где VSTO кэширует метаданные для решений. Я удалил все ключи и подразделы (ваши существующие решения по-прежнему будут работать, это просто кешированные метаданные), и мое решение успешно скомпилировано.

"

person Cece Dong - MSFT    schedule 28.04.2016
comment
Спасибо, Сеси, за ответ. Я прочитал статью Йенса и сделал то, что он советовал, но у меня это не сработало. Что я сделал, так это запустил Regedit на компьютере с сервером сборки TFS в качестве учетной записи, которая запускает сборку. Я удалил все ключи и подключи в папке HKEY_CURRENT_USER\Software\Microsoft\VSTO\SolutionMetadata. Затем я запускаю сборку из Visual Studio и снова получаю ту же ошибку. Есть предположения? - person MBK; 28.04.2016

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

Я создал новый проект надстройки Word 2016 в Visual Studio 2015. Нет специального кода. В проекте был только автоматически сгенерированный код. Visual Studio построила проект без ошибок. Я запускаю сборку с выбранным параметром MSBuild Diagnostic Output Verbosity.

После этого запускаю программу MSBuild из командной строки с теми же параметрами, что и TFS Build Server запускает сборку. Единственным отличием была опция Журнал подробностей диагностики для создания подробного журнала. Я сравнил два журнала, созданные Visual Studio и MSBuild. В журнале MSBuild указано, что рабочий процесс так и не дошел до этапа отмены регистрации надстройки. На самом деле, он пытался зарегистрировать надстройку без отмены регистрации. Журнал Visual Studio показал, что сборка Visual Studio отменила регистрацию надстройки и после этого успешно зарегистрировала ее.

Изучая возможности TFS 2015, я узнал о пуле агентов и агентах сборки. Я понял, что вместо запуска MSBuild для определенных сборок XAML агенты сборки TFS 2015 используют Visual Studio для сборки приложения. Итак, я настроил пул агентов и агент сборки на своем сервере сборки, и вуаля, надстройка была успешно собрана!

Вывод: если у вас есть определенная XAML сборка для вашего проекта надстройки, не используйте ее в TFS 2015. Создайте новое определение сборки TFS, используя функции пула агентов, предоставляемые в TFS 2015. Это гарантирует, что ваша сборка будет выполнена на сервере сборки TFS. точно так же, как на вашем ПК в среде Visual Studio.

person MBK    schedule 26.05.2016