アセンブリを通じて、他の .NET アプリケーションが使用しているフレームワークのバージョンを確認しようとしています。フレームワークのバージョンを取得する 2 つの方法を見つけました (最初は ImageRunetimeVersion を使用し、アセンブリの FullName を使用) が、そこから 2 つの異なる値を取得しており、どちらが正しいかわかりません。
Assembly ass = Assembly.LoadFrom(autPath);
string imageRuntimeVersion = ass.ImageRuntimeVersion;
Console.WriteLine("ImageRunetimeVersion: " + imageRuntimeVersion);
Console.WriteLine("FullName: " + ass.FullName);
Console.WriteLine("");
Console.WriteLine("----");
Console.WriteLine("Referenced Assemblies: ");
Console.WriteLine("");
AssemblyName[] referencedAssemblies = ass.GetReferencedAssemblies();
foreach (AssemblyName a in referencedAssemblies)
{
Console.WriteLine(a.FullName);
}
これを自分のアプリケーションとたとえば paint.net でテストすると、結果は次のようになります。
ご覧のとおり、どの「バージョン」が正しいかはわかりません。最大の問題は、.net アプリケーションのプロジェクト プロパティを確認しようとすると、ターゲット プラットフォームが 2.0 または 1.0 ではなく 3.5 であることです。