修复 LINQPad 中 System.ServiceModel "They type 'X' exists in both 'Y' and 'Z'" C# 错误



如果I:

  1. 在LINQPad 6中创建一个新的C#查询
  2. 添加System.ServiceModel.HttpNuGet包或引用它的其他包
  3. 尝试从System.ServiceModel命名空间实例化一个类,例如System.ServiceModel.BasicHttpBinding

导致以下.linq文件:

<Query Kind="Expression">
<NuGetReference>System.ServiceModel.Http</NuGetReference>
</Query>
new System.ServiceModel.BasicHttpBinding()

然后我得到一个编译错误:CS0433 The type 'BasicHttpBinding' exists in both 'System.Private.ServiceModel, Version=4.7.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.ServiceModel.Http, Version=4.7.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

如果我在Visual Studio中创建一个项目,并添加相同的NuGet包和代码,我不会收到此错误。

根据错误的C#语言引用,应该可以通过使用-reference编译器选项或不引用其中一个程序集来解决。但是,我似乎找不到在LINQPad中使用此编译器选项的方法,也找不到删除对System.Private.ServiceModel的程序集引用的任何方法。

如何修复错误?

这是LINQPad中的一个错误,由一个模糊的场景触发。System.Private.ServiceModel包包含一个带有运行时所需程序集的lib文件夹,以及一个带有underscore.underscore文件的ref文件夹,该文件指示编译器不应引用任何程序集。因为LINQPad找不到引用程序集,所以它将lib文件夹中的程序集提供给编译器,从而导致错误。

我已经准备好了修复程序,目前正在运行回归测试。该修复程序可能会进入6.11.2测试版,该版本将在一两天后发布。

相关内容

最新更新