" EnsureBindingRedirects"任务意外失败

时间:2013-05-30 09:19:18

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

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

  

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

14 个答案:

答案 0 :(得分:63)

这是Microsoft.Bcl.Build中的错误,要解决此问题,您必须在culture - assemblyIdentityweb.config中加入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>

答案 1 :(得分:11)

我有这个错误,但略有不同,花了我45分钟才弄清楚,所以我觉得我最好把它弄出来。

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

  

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

原因是我最近在我的web.config appSettings中添加了一个条目,其中value是一个包含符号(&amp;)的网址。

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

我将网址中的所有&更改为&amp;,并且构建时没有问题。

答案 2 :(得分:8)

在我的案例中,在我合并了一个破坏我的web.config文件的分支后,问题已经显露出来了。它添加了注释字符序列<!--,但没有关闭部分-->

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

答案 3 :(得分:7)

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

在Package Manager控制台上运行:

Update-Package Microsoft.Bcl.Build

答案 4 :(得分:1)

新版本的Microsoft.Bcl.Build(1.0.6)已经推送到NuGet.org来解决这个问题。将文化添加到assemblyIdentity的解决方法已不再必要,但如果将其保留,则不会受到影响。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

我的问题是由于web.config中的appSettings值,其中包含一个带&amp;的URL。字符。

答案 9 :(得分:0)

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

答案 10 :(得分: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)

我从一个转换中复制并粘贴了一个appsetting。 解决方案是删除转换属性

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

答案 11 :(得分:0)

I resolved this by following these steps:

1。)从solution \ packages中删除Microsoft.Bcl.Build.1.0.13。

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

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

4。)重新生成解决方案后,按窗口右上角的Restore Packages。

答案 12 :(得分:0)

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

  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. 在每个<dependentAssembly>下的 App.config / Web.config 文件中,添加以下键值对:culture="neutral"<assemblyIdentity ... />
  5. 另一步骤描述了如何解决您的特殊情况,上面没有描述:)

我希望这会有所帮助。

答案 13 :(得分:0)

通常是Microsoft.Bcl.Build故障。在我的情况下是合并后,Git将无效数据添加到我的web.config中。只需打开web.config文件并检查像这样的行:

  • <<<<<<<头
  • =======
  • >>>>>>> dev

删除它们。