0

私はこのようなプロジェクトを持っています:

テストソリューション

Project TestApplication
    References: TestFunctions.dll(ver 1.0.0.0),Project TestDLL
Project TestDLL
    References: TestFunctions.dll(ver 1.0.0.1)

アプリケーションで TestDLL.Methodx() を呼び出すと、内部で TestFunctions.HelloWorld() が呼び出されますが、TestFunctions.HelloWorld() は TestFunctions.dll(ver 1.0.0.1) にのみ存在し、呼び出そうとするため、 MissingMethodException が返されます。 ver 1.0.0.0 dllの関数...

正しいバージョンを強制的に呼び出すにはどうすればよいですか?

「外部エイリアス」を使用してみましたが、役に立ちませんでした...

4

5 に答える 5

2

参照されている dll の名前を TestFunctions1.0.0.0.dll および TestFunctions1.0.0.1.dll に変更します。

2 つの参照が同じ名前の場合、一方はコンパイル時に他方によってオーバーライドされます。

于 2009-06-10T15:47:02.920 に答える
0

アセンブリに署名して(厳密な名前を付けて)GACに配置するか、Visual Studioを使用している場合は、2つの異なるバージョンを異なる出力フォルダーにビルドして参照を設定する必要があります。プロジェクト出力ではなく、ファイルパスに移動します。次に、参照のプロパティで、特定のバージョンをtrueに変更できます。

于 2009-06-10T16:01:04.267 に答える
0

Visual Studio では一度に 1 つのバージョンの DLL しか使用できないと思います。

これを解決するには、実行時に Assembly.Load() バージョン 1.0.0.1 をロードしてみてください。

于 2009-06-10T15:47:35.523 に答える
0

最後に、他の質問のようにこれを解決し、TestFunctions.dllそれを使用するプロジェクトに従って名前を変更しました。それはより手作業ですが、少なくとも機能します。

テストする時間があまりないため、他の回答のいくつかも機能するかどうかはわかりません。申し訳ありません。助けてくれてありがとう!

于 2009-06-15T07:07:05.230 に答える
0

正しい DLL を呼び出すよう「強制」できる唯一の方法は、正しい DLL を参照することです。つまり、v1.0.0.0 への参照を削除し、v1.0.0.1 への参照を追加する必要があります。

于 2009-06-10T15:52:15.093 に答える