Custom Tool Error: after switching project from .net 4.5 to .Net 4.6.1

Custom Tool Error: after switching project from .net 4.5 to .Net 4.6.1

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

The "GenerateBindingRedirects" task failed unexpectedly. System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.Build.Tasks.GenerateBindingRedirects.UpdateExistingBindingRedirects(XElement runtimeNode, IDictionary`2 redirects) at Microsoft.Build.Tasks.GenerateBindingRedirects.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

Custom tool error: Failed to generate file: An error occurred creating the configuration section handler for system.serviceModel/bindings: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) (C:\ALM[BranchName]\Common[ProjectName]\app.config line 48) Portal.Interface C:\ALM[BranchName]\Common[ProjectName]\Service References[ServiceName]\Reference.svcmap

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

我还确认服务引用配置 "Reuse types in referenced assemblies" 未选中。

一次搜索让我删除了 Reference.svcmap 中的一个条目,但没有具体说明应删除的条目。

我绝对不了解服务参考,因此我们将不胜感激。

违规行:

private void UpdateExistingBindingRedirects(XElement runtimeNode, IDictionary<AssemblyName, string> redirects)
{    
    ...
    var publicKeyToken = assemblyIdentity.Attribute("publicKeyToken");
    var publicKeyTokenValue = publicKeyToken.Value;
    ...

您似乎无法重定向名称不强的程序集。这意味着我应该能够删除条目。这确实让我想知道这在 .Net 4.5

之前是如何工作的

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