0

パス指定時のdllのバージョンを調べたい。path = "progfiles/harry/sample.dll" とします。sample.dll のバージョンを確認する方法。.net Framework 3.5 SP1 を使用しているため、FileVersionInfo を使用できません。Assembly.LoadFrom を試してみました。しかし、私が LoadFrom で直面している問題は、「同じ ID を持つアセンブリが既に読み込まれている場合、別のパスが指定されていても、LoadFrom は読み込まれたアセンブリを返す」ということです。

4

3 に答える 3

1

とにかく、アセンブリを別のAppDomainにロードするだけです。

var domain = AppDomain.CreateDomain("tmp");
var version = domain.Load().GetName(path).Version;

編集:

Windows CE をターゲットにしているため、GetFileVersionInfo関数を使用できます。

以下は、.Net/C# 内からこの関数を使用する方法の完全なコード サンプルです。

于 2012-07-27T10:08:20.760 に答える
0

使用できますAssemblyName

var assemblyName = AssemblyName.GetAssemblyName(assemblyPath);
System.Diagnostics.Debug.WriteLine(assemblyName.Version);
于 2012-07-27T12:51:52.480 に答える
0

DLL ライブラリのバージョンを確認するコード例:

Version ver = Assembly.LoadFrom("Library.dll").GetName().Version;

編集 1:OK、既に実行中のアセンブリを取得するには、次の例を試すことができます。

Assembly SampleAssembly;
SampleAssembly = Assembly.GetAssembly(ObjectLoadedFromDLL.GetType());
Version ver = Assembly.GetExecutingAssembly().GetName().Version;

また、このメソッドの完全なドキュメントである MSDN へのリンク: Assembly.GetExecutingAssembly メソッド

于 2012-07-27T09:53:55.570 に答える