我编写了一个小应用程序来获取.cab文件中包含的文件的版本号。
我将cab中的所有文件提取到一个临时目录中,循环浏览所有文件并检索版本号,如下所示:
//Attempt to load .net assembly to retrieve information
Assembly assembly = Assembly.LoadFile(tempDir + @"" + renameTo);
Version version = assembly.GetName().Version;
DataRow dr = dt.NewRow();
dr["Product"] = renameTo;
dr["Version"] = version.ToString();
dt.Rows.Add(dr);
然后,当完成时,我想删除所有已提取的文件,如下所示:
foreach (string filePath in filePaths)
{
//Remove read-only attribute if set
FileAttributes attributes = File.GetAttributes(filePath);
if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
File.SetAttributes(filePath, attributes ^ FileAttributes.ReadOnly);
}
File.Delete(filePath);
}
这适用于所有文件,但在.net.exe上有时会失败。我可以手动删除该文件,这样它就不会被锁定。
我应该寻找什么来实现这一目标?是集会。LoadFile可能锁定了文件?