多くの投稿に記載されているfusion.dllラッパーを実装しました。これで、更新が必要かどうかを判断するために必要なDLLがビルドとリビジョン数字。その結果、私はバージョン番号を比較することができず、Last Modifiedの日付を比較する必要があります。GACのアセンブリの最終変更日の取得
fusion.dllまたはそれのラッパーには私が推測するような方法はありませんが、どのようにしてdllの '実際の'パスを決定して最終変更日時を発見できるのですか?これまで
私のコード:私はあなたが達成しようとしているのは本当に2主なタスクがある
private DateTime getGACVersionLastModified(string DLLName)
{
FileInfo fi = new FileInfo(DLLName);
string dllName = fi.Name.Replace(fi.Extension, "");
DateTime versionDT = new DateTime(1960,01,01);
IAssemblyEnum ae = AssemblyCache.CreateGACEnum();
IAssemblyName an;
AssemblyName name;
while (AssemblyCache.GetNextAssembly(ae, out an) == 0)
{
try
{
name = GetAssemblyName(an);
if (string.Compare(name.Name, dllName, true) == 0)
{
FileInfo dllfi = new FileInfo(string.Format("{0}.dll", name.Name));
if (DateTime.Compare(dllfi.LastWriteTime, versionDT) >= 0)
versionDT = dllfi.LastWriteTime;
}
}
catch (Exception ex)
{
logger.FatalException("Unable to get version number: ", ex);
}
}
return versionDT;
}
を見つけていないそれは私が融合するAPIで遊ん以来、長い時間がかかりました。しかし、IAssemblyCache.QueryAssemblyInfoを代わりに呼び出してみましたか?とりわけ、ファイルパスを返すべきです。 –