46

当我从所有包创建新的ASP.NET 4.5Web 表单应用程序vs2012并更新所有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()

4

14 回答 14

65

这是一个错误,Microsoft.Bcl.Build要解决它,您必须将culture信息放在assemblyIdentity- 部分web.configor app.config

例如,如果您有:

<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>
于 2013-05-30T09:41:32.577 回答
17

我有这个错误,但略有不同,我花了 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 unexpected token。预期的标记是';'。第 39 行,第 175 位。

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

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

&将 URL 值中的所有内容更改为,&amp;并且它没有问题地构建。

于 2016-05-11T20:37:17.697 回答
12

就我而言,在我合并了一个破坏了我的web.config文件的分支后,问题就出现了。它添加了注释字符序列<!--而不关闭部分-->

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

于 2016-03-05T08:57:39.593 回答
10

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

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

Update-Package Microsoft.Bcl.Build
于 2015-12-03T21:52:21.080 回答
1

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

于 2013-06-03T13:50:25.170 回答
1

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

  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. App.config/Web.config文件下的每个<dependentAssembly>添加以下键值对:culture="neutral"<assemblyIdentity ... />.
  5. 描述如何修复您的独特案例的另一个步骤,上面没有描述:)

我希望这有帮助。

于 2019-07-24T07:23:22.920 回答
1

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

  • <<<<<<< 头
  • =======
  • >>>>>>> 开发

删除它们。

于 2020-10-19T17:11:08.320 回答
0

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

于 2018-01-08T22:38:35.373 回答
0

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

于 2017-02-21T07:50:45.840 回答
0
I resolved this by following these steps:

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

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

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

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

于 2019-04-03T07:04:26.253 回答
0

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

于 2018-02-23T17:42:03.663 回答
0

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

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

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

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

于 2019-03-05T11:30:33.873 回答
0

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

于 2017-11-28T13:02:14.593 回答
0

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

于 2017-03-27T15:31:45.747 回答