【问题标题】:build error with VS 2010 and FindRibbonsVS 2010 和 FindRibbons 的构建错误
【发布时间】:2015-06-15 17:49:26
【问题描述】:

我有 VS 2010、2012 和 2013。我从 svn 获得了一个现有项目,所以它以前从未在我的机器上。当我尝试编译时,出现以下错误

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.

我发现有几个帖子提到去

C:\程序文件 (x86)\MSBuild\Microsoft\VisualStudio\v10.0\OfficeTools

,打开 Microsoft.VisualStudio.Tools.Office.targets 并用我所做的 12.0.0.0 替换所有 10.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.

【问题讨论】:

  • 能否从 Visual Studio 中删除并重新添加引用?
  • 你试过改成11.0.0.0吗?
  • 是的,我也试过了。没有帮助。看起来一些 Visual Studio 更新破坏了这个“FindRibbons”任务(错误的程序集版本或参考 - 不知道)。尝试卸载所有版本的 Visual Studio,然后按升序重新安装它们(2013 和 Update4)。为我工作。

标签: visual-studio-2010 build


【解决方案1】:

这很可能是 DLL Hell 问题,您在 GAC 中安装了错误版本的 Microsoft.VisualStudio.Tools.Office.BuildTasks.dll。它缺少FindRibbons class

对此有一个半体面的解释,VS2012 的早期预览版部署了一个缺少该类的 DLL 版本。在this MSDN forums thread 中讨论。提出您已经尝试过的相同解决方法,而不是解决方案。否则,请不要在需要完成工作的机器上安装 Visual Studio 测试版。

这个问题非常复杂,因为 MSDN 文档说该类仅适用于 VS2012 及更高版本,不适用于 VS2010。当您安装了 VS2013 时,必须有一个 &lt;bindingRedirect&gt; 将版本 10.0.0.0 和 11.0.0.0 转发到 12.0.0.0。不知道在哪里,我在我的机器上找不到它。

不用说,这与 DLL Hell 所能得到的一样糟糕。两种可能的解决方案:

  • Visual Studio 不再自动升级项目文件。但这就是您希望在这种情况下发生的事情,您需要使用 VS2013 工具链。使用文本编辑器编辑 .csproj 文件(记事本即可)并将ToolsVersion 属性更改为“12.0”。

  • 修复 GAC 并删除不良版本的 DLL。您首先需要一个正确的版本,将其从另一台具有该 DLL 的已知良好副本的机器上复制下来。您可以使用资源管理器找到它,导航到 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Office.BuildTasks。你那里可能有多个子目录,我只有一个用于 VS2013。 12.0 子目录中的 DLL 日期为 2014 年 8 月 7 日,长度为 102,688 字节。您可以使用 Reflector 或 ILSpy 等反编译器来仔细检查它是否包含 FindRibbons 类。

如果这一切都不起作用,那么一个绝望的举动就是重新安装所有东西。修复损坏的原始来源仍然很重要,如果您在那台机器上确实有早期版本的 VS2012,则很难做到。运行 setup.exe /uninstall /force 确实倾向于摆脱它。祝你好运,从来没有一个有趣的问题要解决。 -

【讨论】:

    【解决方案2】:

    尝试打开 csproj 文件并查找&lt;ItemGroup&gt;,在那里您应该会看到一个&lt;Reference Include="Findribbons"&gt;,包括&lt;HintPath&gt;。您可能想查看它是否引用了您所引用的库文件的正确(或任何)版本。

    尤其是下载的项目,您会发现引用有时设置不正确(绝对路径)。

    【讨论】:

    • 我的 vbproj 文件中没有 Include=FindRibbons
    • 你有这个项目的链接吗?
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多