如果I:
- 在LINQPad 6中创建一个新的C#查询
- 添加
System.ServiceModel.Http
NuGet包或引用它的其他包 - 尝试从
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测试版,该版本将在一两天后发布。