web-dev-qa-db-ja.com

アセンブリ(dll)のバージョンを確認する方法は?

C#アプリケーションがあり、変更を加えたときにエラーメッセージが表示されます。

タイプ 'System.TypeLoadException'の未処理の例外がWindowsFormsApplication1.exeで発生しました

追加情報:タイプを読み込めませんでした
アセンブリ「TIProData、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null」の「TradeIdeas.TIProData.OddsMakerColumnConfiguration」。

このメッセージは、dll(TIProData)のバージョン番号が1.0.0.0であることを示しています。利用可能な新しいバージョンがあると思います。マシン上のdllのバージョン番号を確認するにはどうすればよいですか?

21
user3229570

Reflector[〜#〜] ildasm [〜#〜] または ILSpy を使用して、アセンブリバージョンを取得できます。

通常、ILDASMはC:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe(ここでv8.1Aは、インストールされているWindows SDKのバージョンです。

ILDASM:

ildasm

リフレクター:

reflector

30
Patrick Hofman

いくつかの方法があります:

  • Visual Studioでdllを参照する場合(ProjectName/Referencesフォルダー内)、DLLを右クリックして[プロパティ]を選択すると、[バージョン]と[ランタイムバージョン]が表示されます。

  • エクスプローラーでdllファイルを右クリックしてプロパティを選択すると、「ファイルバージョン」と「製品バージョン」があります。

  • または、コードで調査します。

    Assembly assembly = Assembly.LoadFrom("TestAssembly.dll");
    Version ver = Assembly.GetName().Version;
    
2
PiotrWolkowski

小さなutilアプリからAssemblyName.GetAssemblyName(string path)を使用できます。

[〜#〜] msdn [〜#〜] の詳細。

2
James Lucas

アセンブリに属する​​クラスを知っている場合は、GetTypeInfoを使用できます

var runtimeVersion = typeof(MyClass)
.GetTypeInfo()
.Assembly
.GetCustomAttribute<AssemblyFileVersionAttribute>();

文字列ver = RuntimeVersion.Version;

例は、 https://developers.de/blogs/damir_dobric/archive/2017/06/27/how-to-deal-with-Assembly-version-in-net-coreからの.Net Coreです。 aspx

0