C# 导入的类型定义了多次-仅在Mono 2.10.1上的xbuild下定义

C# 导入的类型定义了多次-仅在Mono 2.10.1上的xbuild下定义,c#,msbuild,mono,monodevelop,xbuild,C#,Msbuild,Mono,Monodevelop,Xbuild,编译某些使用HttpContextBase的代码时出现问题,导致编译错误: UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times 令人不快的是: private readonly HttpContextBase httpContext; 如果我去掉这行代码,或者对它进行注释,错误就会消失,程序集也会编译 在另一个项目(此项目的测

编译某些使用
HttpContextBase
的代码时出现问题,导致编译错误:

UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times
令人不快的是:

private readonly HttpContextBase httpContext;
如果我去掉这行代码,或者对它进行注释,错误就会消失,程序集也会编译

在另一个项目(此项目的测试项目)中,当试图声明一个
HttpContextBase
以传递给此对象的构造函数时,会发生相同的错误。因此,这似乎是一个跨项目的问题

这是项目文件问题吗?(在其中找不到对
System.Web
的多个引用)。它是在我对
AfterBuild
步骤进行一些更改之前编译的,所以我担心我把csproj文件中的某些内容弄糟了

这是使用Mono 2.10.1构建的,使用monodevelop主干构建集使用xbuild进行编译


使用默认的Monodevelop生成行为编译不会产生此错误。

t类型System.Web.HttpContextBase是在.NET 3.5 SP1的System.Web.Abstracts.dll中定义的,但在.NET 4.0的System.Web.dll中定义的。这意味着引用System.Web.Abstractions.dll中类型的编译dll将“类型转发”到System.Web.dll


您在/Users/shims/Development/convergence/lib/System.Web.Abstractions.dll中似乎有System.Web.Abstractions.dll的本地副本,可能是.NET 3.5版本,这将与4.0 System.Web.dll冲突。

当您引用在多个类中定义的类型时,会发生此问题。要解决此问题,您可以编辑引用并取消选中导致问题的某个dll

当您将鼠标悬停在Visual Studio/Xamarin中的错误上时,它将显示存在此类型的多个引用名称。只需检查并只包含一个引用或类

下面是供您参考的屏幕截图

解决问题后:


您可以启用详细xcode输出并将其粘贴到某个地方吗?可以-您需要的详细程度如何?足以包含C#编译器的完整命令行参数。@mhutch-这里是:与此问题无关,我昨天在一个新驱动器上重新安装了OS X。在安装2.10.1和MD head构建之后,相同的代码签出构建没有问题。我想知道这是否与一些不同版本的Mono随着时间的推移而被安装/卸载/升级/降级有关。谢谢-有时候最明显的事情是最难以捉摸的。