2

在编译一些使用的代码时遇到问题会引发HttpContextBase编译错误:

UserService.cs(13,26): error CS0433: The imported type `System.Web.HttpContextBase' is defined multiple times

违规行是:

private readonly HttpContextBase httpContext;

如果我去掉那行代码,或者注释它,错误就会消失并且程序集会编译。

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

这是项目文件问题吗?(在那里找不到不止一个参考System.Web)。在我对步骤进行一些更改之前它正在编译AfterBuild,所以我担心我在 csproj 文件中搞砸了一些东西。

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

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

4

2 回答 2

6

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

您似乎在 /Users/shimms/Development/convergence/lib/System.Web.Abstractions.dll 中有一个 System.Web.Abstractions.dll 的本地副本,可能是 .NET 3.5 版本,它会与 4.0 系统冲突。 Web.dll。

于 2011-03-28T19:59:01.760 回答
1

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

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

下面是截图供大家参考。

在此处输入图像描述

修复问题后:

在此处输入图像描述

于 2017-01-27T13:05:24.390 回答