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

时间:2016-05-18 15:19:40

标签: 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重定向)      在Microsoft.Build.Tasks.GenerateBindingRedirects.Execute()      在Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()      在Microsoft.Build.BackEnd.TaskBuilder.d__26.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

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

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

一次搜索让我删除了Reference.svcmap中的一个条目,但是对于应删除的条目是非特定的。

我绝对不会使用服务参考,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

违规行:

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

看起来你无法重定向没有强名称的程序集。这意味着我应该能够删除条目。这确实让我想知道在.Net 4.5之前这是如何工作的

答案 1 :(得分:0)

指定publicKeyToken="null"可以为我解决。