当我从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()
答案 0 :(得分:63)
这是Microsoft.Bcl.Build
中的错误,要解决此问题,您必须在culture
- assemblyIdentity
或web.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中进行转义,即使在属性值中也是如此。
我将网址中的所有&
更改为&
,并且构建时没有问题。
答案 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)
可执行以下步骤来解决该问题:
<dependentAssembly>
下的 App.config / Web.config 文件中,添加以下键值对:culture="neutral"
至<assemblyIdentity ... />
。我希望这会有所帮助。
答案 13 :(得分:0)
通常是Microsoft.Bcl.Build故障。在我的情况下是合并后,Git将无效数据添加到我的web.config中。只需打开web.config文件并检查像这样的行:
删除它们。