2

を利用するコードをコンパイルすると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でビルドしており、xbuildを使用してコンパイルするためにmonodevelopトランクビルドセットを使用しています。

デフォルトのMonodevelopビルド動作を使用してコンパイルしても、このエラーは発生しません。

4

2 に答える 2

6

タイプSystem.Web.HttpContextBaseは、.NET 3.5 SP1のSystem.Web.Abstractions.dllで定義されていましたが、.NET4.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のローカルコピーがあるようです。おそらく.NET3.5バージョンであり、4.0システムと競合します。 Web.dll。

于 2011-03-28T19:59:01.760 に答える
1

この問題は、複数のクラスで定義されている型を参照している場合に発生します。これを修正するには、参照を編集して、問題の原因となっているdllの1つをオフにします。

Visual Studio / Xamarinでエラーにカーソルを合わせると、このタイプが存在する複数の参照名が表示されます。参照またはクラスを1つだけ確認して含めてください。

以下は参考のためのスクリーンショットです。

ここに画像の説明を入力してください

問題を修正した後:

ここに画像の説明を入力してください

于 2017-01-27T13:05:24.390 に答える