2016-04-03 8 views
1

私は古い.netアプリケーションを持っています。私は同様のゲームをサポートするように修正したかったのですが、新しいDLLで組み込みのDLLを切り替えて、modスクリプトを読み込んでみるとアセンブリエラーが出ます。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによって構築され、ロードできません。

新しいDLLと互換性のあるアプリにする方法はありますか?

私はアプリの元の著者に連絡を取りましたが、古いプロジェクトを更新したくありませんでした。また、私はソースがありません。

両方のDLLは、V 1.0.0.0ですが、一つは、ネット2.0用に構築されており、エクスプローラが言うCFFので、リフレクターは、それが3.5だと言うが、新しい1つのネット4.0

excutableは、ネット2.0のために構築されています。

これは意味がありますか?

+0

私はilmergeを使用してターゲットプラットフォームをnet v4に変更してこれを取得しました。 http://i.imgur.com/57d8345.jpg – slarlac249

答えて

0

正しく理解していれば、.NET Frameworkアプリケーションに.NET Framework 4.0アセンブリをロードしようとしています。これを達成しようとするとtrivialからかなり離れているようですが、これを試してみる前に、次のように試してみます:

古いソリューションが難読化されておらず、一部の著作権侵害にならない場合は、そのフリー兄弟Telerik decompiler)を使用して古いアセンブリを逆コンパイルし、プロジェクトを作成し、.NET Framework 4.0に対してコンパイルします。

+0

私のプログラミングに関する知識はかなり限られていることを忘れてしまった。私はすでにそれを逆コンパイルしてvs2010で再構築しようとしましたが、コンパイル時に大きなエラーリストを投げてしまい、何もビルドしないので、何が起きているのか分かりません。ここにアプリケーションエラーの画面があります。もしそれが何でもあれば、http://i.imgur.com/etxsK4G.jpg – slarlac249

+0

プロジェクトのターゲットフレームワークを.NET Framework 4.0に変更しましたか? – Alexei

+0

TypeLoadExceptionの内部例外を表示するために、デバッグアセンブリを使用してプロセスにアタッチすることはできますか? – Alexei

0

これは、プロジェクトがより低いフレームワークバージョン(1.0,2.0,3.5、または4.0など)をターゲットにしてビルドされており、新しいフレームワークバージョンで構築されたアセンブリを参照しようとしていることを意味します。あなたはそれをすることはできません。

後のフレームワークバージョンでビルドされたコードを参照する必要がある場合は、そのフレームワークバージョン以降を対象にするにはchange your projectにする必要があります。もしあなたがそれをしなければならないのであれば、それはもっと最近のものなので4.5をターゲットにするかもしれません。

新しいフレームワークのバージョンをターゲットに変更するのは本当に簡単ですが、時には解決しなければならない他の参照の問題が発生することがあります。うまくいけば、あなたがそれに来るならば、それを渡すことができます。

+0

私は元のソースを持っていないので、私は何もできないと思うし、私の頭の上に行くエラーのために逆コンパイルした後にvsで再構築されません。 :( – slarlac249

関連する問題