2
我從SQL Server中刪除複製,所以我需要搜索錯誤(或自動生成的代碼)讀取列rowguid的代碼。如何在使用Reflection或Mono.Cecil的已編譯程序集中搜索字符串?
爲了防止出現任何問題,我需要在生產服務器上的程序集中搜索以確保所有程序集都已更新。並找到一些我不知道的遺留程序集。
對於使用實體框架的應用程序,我需要使用rowguid名稱查找屬性。但是舊的代碼使用像table [「rowguid」]這樣的代碼。所以我需要找到對該字符串的所有引用。我怎樣才能做到這一點?
我正在使用此代碼。它的工作原理,但效率不高:
foreach (var assemblyFile in allAssemblies)
{
AssemblyDefinition assemblyDefinition = AssemblyDefinition.ReadAssembly(assemblyFile.FullName, parameters);
AstBuilder astBuilder = new AstBuilder(new DecompilerContext(assemblyDefinition.MainModule));
astBuilder.AddAssembly(assemblyDefinition);
using (StringWriter output = new StringWriter())
{
astBuilder.GenerateCode(new PlainTextOutput(output));
string result = output.ToString();
if (result.IndexOf("rowguid", StringComparison.OrdinalIgnoreCase) > -1)
{
Console.WriteLine(assemblyFile.FullName + ": ");
Console.WriteLine();
Console.WriteLine(result);
}
}
}
如果手動搜索是不夠的,你可以使用工具,如反射器或DotPeek – Lanorkin
我需要搜索組件百元 –
假設程序集未被混淆,可以將程序集反編譯爲源代碼,然後搜索代碼庫。 –