2016-08-16 10 views
0

.netアセンブリ(dllまたはexe)のターゲットフレームワークバージョンを特定したいと思います。 .netアセンブリにターゲットフレームワークがある場合はどうすればいいですか?< .net 4.0? 外部ツールを使用する必要がないソリューションがあればいいと思います。私は、Microsoft VS/PowerShellまたはWindowsに基づいたソリューションを好むだろう。 これで私を助けることができればとてもうれしいです。 今、アセンブリにターゲットバージョン> = .net 4.0がある場合、ターゲットフレームワークバージョンを取得する方法しかわかりません。私はアセンブリをロードするためにAssembly.ReflectionOnlyLoadFromを使用して、返されたアセンブリのImageRuntimeVersionを検査している(この場合、私はちょうどアセンブリのマニフェスト内で見て、TargetFrameworkAttributeを見て)ターゲットフレームワークを持つ.netアセンブリのターゲットフレームワークを取得します。<net>

おかげでたくさん

PhilOverflow

+0

アセンブリはフレームワークバージョンをターゲットにしておらず、*ランタイム*バージョンを対象としています。 2.0.50727になり、[TargetFrameworkAttribute]が表示されなくなります。どうしてこのことが重要であるのかという質問からはっきりと分かりませんが、欠けている属性はたぶん十分な手掛かりです。または[これを使用する](https://msdn.microsoft.com/en-us/library/ms230176(v = vs.110).aspx) –

+0

<4.0は、ターゲットフレームワークのバージョン機能をサポートしていないことを意味します。あなたは単にその事実を受け入れるべきです。 –

答えて

0

、のように:

var assembly = Assembly.ReflectionOnlyLoadFrom(ada.FileName); 
    string name = assembly.GetName(); 
    string clrVersion = assembly.ImageRuntimeVersion; 

私は正常にこの技術を使用して、.NET 4の実行から.NET 2および.NET 4つのアセンブリを検出したが、それはdetecために実行可能.NET 2から動作するかどうかわかりませんでした.NET 4アセンブリ。

+0

ランタイムバージョンを検出することをお勧めします。私にとっては、ランタイムバージョンの代わりにアセンブリのフレームワークバージョンを知ることが重要です。しかし、私はあなたに多くのことを助けていただきありがとうございます。 – PhilOverflow

関連する問題