编译使用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 trunk构建集来使用xbuild进行编译。
使用默认的Monodevelop构建行为进行编译不会产生此错误。
答案 0 :(得分:6)
类型System.Web.HttpContextBase在.NET 3.5 SP1中的System.Web.Abstractions.dll中定义,但在.NET 4.0中的System.Web.dll中定义。这意味着编译的dll引用System.Web.Abstractions.dll中的类型将被“类型转发”到System.Web.dll。
你似乎在/Users/shimms/Development/convergence/lib/System.Web.Abstractions.dll中有一个System.Web.Abstractions.dll的本地副本,可能是.NET 3.5版本,它会与4.0 System.Web.dll。
答案 1 :(得分:1)