「C:\references\Utils.Varia.dll」への参照を持つ ASP.NET Web アプリケーションがあります。この dll の署名付きバージョンを使用する別の dll が参照されています (「C:\references\Utils.Varia.Signed.dll」)。
私のaspxには、次のインポートディレクティブがあります: <%@ Import Namespace="Utils.Varia" %>
このページでは、Utils.Varia.StringExtensions 拡張クラスの文字列拡張を使用しています。
しかし、実行時に次のエラーが発生します。
コンパイル エラー
説明: この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソース コードを適切に変更してください。
コンパイラ エラー メッセージ: CS0121: 次のメソッドまたはプロパティの間で呼び出しがあいまいです: 'CONCENTRA.UTILS.StringExtensions.ToShortReadableString(string, int)' と 'CONCENTRA.UTILS.StringExtensions.ToShortReadableString(string, int)'
したがって、コンパイラは、拡張メソッドを署名済みの dll から取得するか、通常の dll から取得するかを認識していないと思います。
この仮定は正しいですか?もしそうなら、どうすれば正しいdllを指すことができますか?
[編集]
奇妙なことに、このコンパイラ エラーは aspx ファイル内のコードでのみ発生します。コードビハインドで同じ関数を使用すると、すべてが期待どおりに機能します。誰かがこれを説明できますか?
また、実際に署名されたバージョンを使用することは例外であり、他のすべてのコンポーネントは署名されていないバージョンを使用するため、代わりに署名されたバージョンを参照することはできません (明らかに 1 を除く)。