我已将项目从.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中的一个条目,但是对于应删除的条目是非特定的。
我绝对不会使用服务参考,所以任何帮助都会受到赞赏。
答案 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"
可以为我解决。