3

NET 2.0 exe を両方で実行したいとします。

  • NET 2.0 のみがインストールされた XP
  • NET 4.0 のみがインストールされた XP (または NET 2.0 が有効になっていない Windows 8)

1 つの解決策は、MyProgram.exe.config ファイルを作成し、このエンティティを作成することです。

<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>

このエントリ (または MyProgram.exe.config) を exe に埋め込むことは可能ですか? ありがとうございました。

4

2 に答える 2

0

A.NET .exeは と呼ばれassemblyます。プログラム データに加えて、プログラムに関するメタ情報が含まれているため、CLRはそれを操作して、 などを実行できますreflection
アセンブリで情報を提供することはできますが、残念ながら、あなたが望むことはそう簡単にはできません。.exeインストールされている のバージョンを確認し、最終的にそれに対応する必要があります.NET

.NETさらに、アセンブリを作成するときに、 -targetframework、つまり .NET 3.5、.NET 4.0 などを指定することを忘れてはなりません。したがって、.NET 2.0 のアセンブリは、いずれにせよ、下向きであるため、.NET 4.0 で実行されます。互換性。

それらがどのように使用されるかについてはこちらを、クラスについてはこちらを参照してください。assembliesSystem.Reflection.Assembly

于 2013-03-25T11:07:24.110 に答える
0

使用するランタイムの決定は、独自のコードが読み込まれる前に行われます。supportedRuntimeこれは、独自のコードに要素を意味のある形で埋め込むことができないことを意味します。

ただし、通常はその必要はありません。参照する必要があるすべてのサードパーティ プロジェクトを含むすべてのプロジェクトを十分に低いターゲット フレームワークに設定できると仮定すると、それらはより高いフレームワークでも実行されます。できれば、ビルド時に使用したものと同じものを使用してください。

混合モード アセンブリ (C++/CLI) を使用している場合、潜在的な問題の 1 つが発生する可能性があります。ファイルを必要とせずに対処する方法については、この投稿を参照.exe.configしてください。実行可能ファイルは混合モードのアセンブリではありませんが、使用する DLL の一部はそうです。

于 2013-03-25T11:29:06.433 に答える