2014-10-02 2 views
4

У меня есть VS 2010, 2012 и 2013. У меня есть существующий проект из svn, поэтому он никогда не был на моей машине раньше. Когда я попытался собрать, я получил следующее сообщение об ошибкеошибка сборки с VS 2010 и FindRibbons

The "FindRibbons" task could not be loaded from the assembly    
'Microsoft.VisualStudio.Tools.Office.BuildTasks, 
Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. Confirm that the 
<UsingTask> declaration is correct, that the assembly and all its dependencies are 
available, and that the task contains a public class that implements 
Microsoft.Build.Framework.ITask. 

Я нашел несколько постов mentionning пойти на

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ V10. 0 \ OfficeTools

, откройте Microsoft.VisualStudio.Tools.Office.targets и заменить все 10.0.0.0 с 12.0.0.0, который я сделал

, но затем получил следующую ошибку

The "FindRibbons" task has been declared or used incorrectly, or failed during construction. Check the spelling of the task name and the assembly name. 
+0

Можете ли вы удалить и повторно добавить ссылку из Visual Studio? – johnjps111

+0

У вас есть возможность переходить на 11.0.0.0? –

+0

Да, я тоже это пробовал. Не помогло. Похоже, что некоторое обновление Visual Studio нарушило эту задачу «FindRibbons» (неправильная версия сборки или ссылка - не знаю). Попробуйте удалить все версии Visual Studio, а затем установите их в порядке возрастания (2013 с Update4). Работал для меня. – Nikolay

ответ

0

Попробуйте открыть csproj файл и искать <ItemGroup>, там вы должны увидеть <Reference Include="Findribbons"> включая <HintPath>. Возможно, вам захочется узнать, относится ли она к правильной (или любой) версии файла библиотеки, на которую вы ссылаетесь.

Специально с загруженными проектами вы обнаружите, что ссылки иногда устанавливаются неправильно (абсолютные пути).

+0

Нет Include = FindRibbons в моем файле vbproj – hawbsl

+0

У вас есть ссылка на проект? – Chavez

2

Это, скорее всего, проблема с DLL Hell, у вас есть неправильная версия Microsoft.VisualStudio.Tools.Office.BuildTasks.dll, установленная в GAC. Он отсутствует FindRibbons class.

Для этого есть полуподобное объяснение, ранняя версия предварительного просмотра VS2012 развернула версию этой DLL, которая отсутствовала в классе. Обсуждается в this MSDN forums thread. Предлагает одно и то же обходное решение, которое вы уже пробовали, а не решение. В противном случае напоминание о том, чтобы никогда не устанавливать бета-версии Visual Studio на компьютере, вам нужно выполнить свою работу.

Проблема сложна, поскольку в документации MSDN говорится, что класс доступен только для VS2012 и выше, а не для VS2010. И там должно быть <bindingRedirect> где-то, что форварды версии 10.0.0.0 и 11.0.0.0 до 12.0.0.0 при установке VS2013. Не знаю, где, я не могу найти его на своей машине.

Излишне говорить, что это примерно так же плохо, как DLL Hell. Два возможных решения:

  • Visual Studio больше не обновляет файлы проекта автоматически. Но в этом случае вы хотите, чтобы вы захотели использовать цепочку инструментов VS2013. Отредактируйте файл .csproj с помощью текстового редактора (Notepad will do) и измените атрибут ToolsVersion на «12.0».

  • Получить GAC исправлено и избавиться от плохой версии DLL. Сначала вам понадобится правильная версия, скопируйте ее с другой машины, на которой есть хорошо известная копия этой DLL. Вы можете найти его в Проводнике, перейдите к C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.VisualStudio.Tools.Office.BuildTasks. У вас, вероятно, есть несколько подкаталогов, у меня есть только один для VS2013. DLL в подкаталоге 12.0 датирована 8/7/2014 и составляет 102 688 байт. Вы можете использовать декомпилятор, например Reflector или ILSpy, чтобы проверить, что он содержит класс FindRibbons.

Отчаянный ход, если ничто из этого не получается, это переустановить все. Все еще важно восстановить исходный источник коррупции, довольно трудно сделать, если на самом деле у вас была ранняя версия VS2012. Запуск setup.exe/uninstall/force имеет тенденцию избавляться от этого. Удачи вам в этом, никогда не проблема. -