DLLが1つを参照されているが、複数のバージョンがbinフォルダーに存在する場合、ASPXコンパイラが使用するDLLはどのdllになりますか

StackOverflow https://stackoverflow.com/questions/3907461

質問

'c: references utils.varia.dll'への参照があるASP.NET Webアプリケーションがあります。このDLLの署名バージョンを使用する別のDLLが参照されています( 'c: references utils.varia.signed.dll')。

今、私のASPXでは、次のインポート指令があります。

このページでは、utils.varia.stlingextensions extensionClassからの文字列拡張機能を使用しています。

しかし、実行時に次のエラーが発生します。

コンパイルエラー

説明:このリクエストのサービスに必要なリソースの編集中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソースコードを適切に変更してください。

コンパイラエラーメッセージ:CS0121:コールは、次のメソッドまたはプロパティの間であいまいです: 'Concentra.utils.StringExtensions.ToshorTreadableString(String、Int)'および 'Concentra.util.stringextensions.toshortreadablestring(string、int)'

したがって、私の推測では、コンパイラは、署名されたDLLまたは通常のDLLから拡張メソッドを取得するかどうかわからないということです。

この仮定は正しいですか?もしそうなら、どのようにして正しいDLLを指すのですか?

編集
奇妙なことは、このコンパイラエラーがASPXファイル内のコードでのみ発生するということです。 CodeBehindで同じ関数を使用すると、すべてが期待どおりに機能します。誰かがこれを説明してもらえますか?

また、実際に署名されたバージョンを使用することが例外であるため、代わりに署名されたバージョンを参照することはできません。

役に立ちましたか?

解決

デフォルトでは避けている場合、アプリで意図的に「Dll Hell」を復活させるために多くのトラブルに陥ったようです。同じアプリケーションで参照されている同じアセンブリの2つのバージョンがあるのはなぜですか?

これらの参照のいずれかを削除する必要があります(おそらく、削除されている署名のないものでなければなりません)。そこからコードを使用するだけです。または、コードが異なるようにもう一方を変更します。

他のヒント

Webアプリを変更して、署名されたバージョンを参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top