【问题标题】:The "EnsureBindingRedirects" task failed unexpectedly“EnsureBindingRedirects”任务意外失败
【发布时间】:2013-05-25 19:08:33
【问题描述】:

当我从 vs2012 创建新的 ASP.NET 4.5 Web 表单应用程序并更新所有 nuget 包时,我在构建时收到此错误:

错误 1 ​​“EnsureBindingRedirects”任务意外失败。 System.NullReferenceException:对象引用未设置为对象的实例。 在 Roxel.BuildTasks.EnsureBindingRedirects.MergeBindingRedirectsFromElements(IEnumerable`1dependentAssemblies) 在 Roxel.BuildTasks.EnsureBindingRedirects.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()

【问题讨论】:

    标签: .net visual-studio-2012 compiler-errors asp.net-4.5


    【解决方案1】:

    这是Microsoft.Bcl.Build 中的一个错误,要解决它,您必须将culture 信息放在web.configapp.configassemblyIdentity 部分中。

    例如,如果您有:

    <dependentAssembly>
       <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
       <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    

    改成:

    <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    

    【讨论】:

    • 没有 写在 web.config 的任何地方
    • System.Web.Helpers 只是一个示例,检查dependentAssembly 并将cultureinfo 添加到该元素内的所有内容
    • 谢谢!这有帮助!但什么是文化=“中性”?
    • 中性文化是一种代表通用语言(如英语或西班牙语)以及特定语言和地区的文化。 (dotnetfunda.com/interview/…)
    【解决方案2】:

    我遇到了这个错误,但略有不同,我花了 45 分钟才弄明白,所以我想我最好把它弄出来。

    遇到"EnsureBindingRedirects" task failed unexpectedly 问题,但我的问题来自 XmlException:

    (...)\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets(97,5): error MSB4018: System.Xml.XmlException: '=' is an意外的标记。预期的标记是';'。第 39 行,位置 175。

    原来原因是我最近在我的 web.config 的 appSettings 中添加了一个条目,其中 value 是一个包含与号 (&) 的 URL。

    与符号需要在 XML 中进行转义,即使在属性值中也是如此。

    我将 URL 值中的所有 &amp;amp; 更改为 &amp;amp;,它构建没有问题。

    【讨论】:

    • 这也是我的问题,如此神秘的错误,不过你为我节省了很多时间,谢谢!
    • 好地方 JHo - 帮我减轻了很多压力
    • 就我而言,value 属性中有一个 &lt; 和一个 &gt;
    【解决方案3】:

    在我合并一个破坏了我的web.config 文件的分支后,问题就出现了。它添加了注释字符序列&lt;!--,没有关闭部分--&gt;

    使文件标记有效解决了这个问题。

    【讨论】:

    • 谢谢!这也是这里的原因。如果没有您的评论,我可能不会发现它,因为错误出现在 Web.config 文件中,而不是我认为它所指的 *.csproj 文件中。你每天都会学到新东西;)
    • 我的 web.config 也已损坏。修复后,项目编译
    【解决方案4】:

    更新 Microsoft.Bcl.Build 以解决此问题。

    在包管理器控制台上运行:

    Update-Package Microsoft.Bcl.Build
    

    【讨论】:

      【解决方案5】:

      Microsoft.Bcl.Build (1.0.6) 的新版本已推送到 NuGet.org 以解决此问题。不再需要将文化添加到 assemblyIdentity 的解决方法,但如果将其保留在其中也不会受到影响。

      【讨论】:

      • 我在 2 天前试过了,它仍然坏了。不知道这个新包在哪个平行宇宙! :)
      【解决方案6】:

      可以执行以下步骤来解决此问题:

      1. “Microsoft.Bcl.Build”包更新到最新版本。
      2. 确保您的项目下有一个 App.config/Web.config 文件,并且它实际上也存在于您计算机上的相关文件夹中。
      3. 确保 App.config/Web.config 文件中没有特殊字符。如果它们存在,您需要更换它们。看这篇文章->https://support.crossref.org/hc/en-us/articles/215652783-Special-characters-in-your-XML
      4. 在每个&lt;dependentAssembly&gt; 下的App.config/Web.config 文件中添加以下键值对:culture="neutral"&lt;assemblyIdentity ... /&gt;
      5. 描述如何修复您的独特情况的另一个步骤,上面没有描述:)

      我希望这会有所帮助。

      【讨论】:

        【解决方案7】:

        通常是 Microsoft.Bcl.Build 失败。就我而言,是在合并之后,Git 将无效数据添加到我的 web.config 中。只需打开 web.config 文件并检查以下行:

        • =======
        • >>>>>>> 开发

        删除它们。

        【讨论】:

          【解决方案8】:

          您添加了一个在您的解决方案文件夹中实际上不存在的文件的引用。

          【讨论】:

            【解决方案9】:

            当我将 BIN 和 OBJ 文件夹标记为只读时,这发生在我身上。删除 *.dll.config 和 *.app.config 上的只读文件或删除这些文件夹。

            【讨论】:

              【解决方案10】:

              我的问题是标签不在文件的第一行。修复了这个问题,一切正常。

              【讨论】:

                【解决方案11】:

                我的问题是由于 web.config 中的 appSettings 值包含带有 & 字符的 url。

                【讨论】:

                  【解决方案12】:

                  对我来说,这是因为 App.Config 不在文件夹中,并且还有其他 app.configs 用于不同的环境。所以我复制了它。

                  【讨论】:

                    【解决方案13】:

                    我有一个类似的问题,但我的问题是由 web.config 中的 xml 转换指令引起的

                    错误“EnsureBindingRedirects”任务意外失败。 System.Xml.XmlException:“xdt”是未声明的前缀。第 27 行,第 59 位。 在 System.Xml.XmlTextReaderImpl.Throw(异常 e) 在 System.Xml.XmlTextReaderImpl.Throw(String res, String arg, Int32 lineNo, Int32 linePos)

                    我从其中一个转换中复制并粘贴了一个应用设置。 解决方案是删除转换属性

                    (当然这不是 OP 遇到的确切问题,但可以帮助其他人)

                    【讨论】:

                      【解决方案14】:
                      I resolved this by following these steps:
                      

                      1.) 从解决方案\包中删除 Microsoft.Bcl.Build.1.0.13。

                      2.) 关闭解决方案后,再打开解决方案。

                      3.) 导航到工具/Nuget 包管理器。

                      4.) 重新构建解决方案后,按窗口右上角的恢复包。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2021-12-04
                        • 2018-01-02
                        • 2017-09-20
                        • 2017-07-23
                        • 2016-06-22
                        • 2017-07-23
                        • 2021-02-20
                        • 2015-10-05
                        相关资源
                        最近更新 更多