C# 自定义工具错误:将项目从.net 4.5切换到.net 4.6.1后

C# 自定义工具错误:将项目从.net 4.5切换到.net 4.6.1后,c#,.net,.net-4.5,service-reference,.net-4.6.1,C#,.net,.net 4.5,Service Reference,.net 4.6.1,我已将项目从.Net 4.5升级到.Net 4.6.1,现在在尝试编译时出现以下错误: “GenerateBindingRedirects”任务意外失败。 System.NullReferenceException:对象引用未设置为对象的实例。 在Microsoft.Build.Tasks.GenerateBindingRedirects.UpdateExistingBindingRedirects(XElement runtimeNode,IDictionary`2重定向) 在Microsof

我已将项目从.Net 4.5升级到.Net 4.6.1,现在在尝试编译时出现以下错误:

“GenerateBindingRedirects”任务意外失败。 System.NullReferenceException:对象引用未设置为对象的实例。 在Microsoft.Build.Tasks.GenerateBindingRedirects.UpdateExistingBindingRedirects(XElement runtimeNode,IDictionary`2重定向) 在Microsoft.Build.Tasks.GenerateBindingRedirects.Execute()中 位于Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ItaskeExecutionHost.Execute() 在Microsoft.Build.BackEnd.TaskBuilder.d_uu26.MoveNext()中

自定义工具错误:未能生成文件:为system.serviceModel/bindings创建配置节处理程序时出错:参数不正确。(来自HRESULT:0x80070057(E_INVALIDARG)的异常)(C:\ALM[BranchName]\Common[ProjectName]\app.config第48行)Portal.Interface C:\ALM[BranchName]\Common[ProjectName]\Service References[ServiceName]\Reference.svcmap

基于其他搜索,我尝试了: 删除应用程序配置中的ServiceModel部分并更新服务引用。 但这不起作用,因为我无法从我的机器访问服务

我还确认服务引用配置为“引用程序集中的重用类型”未选中

一次搜索导致我删除Reference.svcmap中的一个条目,但没有具体说明应该删除哪个条目

我的服务参考资料绝对不适合我,因此,如果有任何帮助,我将不胜感激。

有问题的一行:

private void UpdateExistingBindingRedirects(XElement runtimeNode, IDictionary<AssemblyName, string> redirects)
{    
    ...
    var publicKeyToken = assemblyIdentity.Attribute("publicKeyToken");
    var publicKeyTokenValue = publicKeyToken.Value;
    ...
private void UpdateExistingBindingRedirects(XElement运行时节点,IDictionary重定向)
{    
...
var publicKeyToken=assemblyIdentity.Attribute(“publicKeyToken”);
var publicKeyTokenValue=publicKeyToken.Value;
...

看起来您无法重定向非强名称的程序集。这意味着我应该可以删除这些条目。这确实让我想知道在.Net 4.5中,这是如何工作的。

指定
publicKeyToken=“null”
为我修复了它。

嗯,“意外”这是一个非常准确的描述。我想在任何人都能对app.config文件如何影响MSBuild形成理论之前,您必须告诉我们更多关于您的项目的信息。如果您有冒险精神,您可以查看项目文件,看看您的项目文件可能有什么问题。有几件事可能会导致NRE,但一种可能的情况是,您的项目文件中不存在某些预期的XML属性。我最终删除了这些重定向,因为它们一开始就毫无用处。我与放入这些重定向的原始开发人员交谈,他不记得为什么要这样做。请检查app.config中的绑定。我有一些重复s、 去掉这些后,它又起作用了。