我有一堆用C#編寫的dll,我知道它中使用的名稱空間名稱。我只需要獲取使用sqlconnection.open()方法或使用名稱空間system.data.sqlclient的dll列表。是否有一些方法可以通過編程方式使用C#來完成?在某些條件下過濾dll
回答
試試這個:
class Program
{
static void Main(string[] args)
{
var methodsCallingDbConnectionOpen = AssemblyDefinition.ReadAssembly(typeof(Program).Assembly.Location)
.MainModule
.GetTypes()
.SelectMany(type => type.Methods)
.Where(method => method.HasBody &&
method.Body.Instructions.Any(instruction =>
instruction.OpCode.Code == Code.Callvirt && instruction.Operand is MethodReference &&
((MethodReference)instruction.Operand).FullName.Contains("System.Data.Common.DbConnection::Open")));
foreach (var method in methodsCallingDbConnectionOpen)
{
Console.WriteLine(method);
}
Console.ReadLine();
}
static void Foo()
{
using (var connection = new SqlConnection())
{
connection.Open();
}
}
}
產地:
System.Void ConsoleApplication1.Program ::富()
注:
- 此示例使用
Mono.Cecil
。 - 此示例檢測到呼叫
DbConnection.Open
。爲了檢測正在使用哪個DbConnection的後代,你必須查看以前的IL指令(例如ctor調用)。
感謝給的提示,現在將檢查 – GowthamanSS 2012-08-09 13:44:02
我得到一個錯誤的\t'Mono.Cecil.AssemblyDefinition'不包含'ReadAssembly'的定義 – GowthamanSS 2012-08-09 14:49:22
可以說我使用哪個版本的mono嗎 – GowthamanSS 2012-08-09 15:14:58
- 1. 在某些條件下過濾出行
- 2. SUMPRODUCT在某些條件下
- 3. preg_replace在某些條件下
- 4. git-過濾某些文件
- 5. LEFT基於一些條件MYSQL連接過濾某些Null值
- 6. AngularJS過濾器在某些領域與「或」條件
- 7. MATLAB - 通過條件對某些列過濾行
- 8. 在某些條件下刪除變量
- 9. 在某些條件下不返回poshytip
- 10. 在某些條件下匹配流
- 11. 在某些條件下提取數據
- 12. 在某些條件下還原矩陣
- 13. Excel VBA在某些條件下刪除某些行
- 14. 過濾,直到滿足某些條件首次
- 15. Django過濾對象的某些參考條件
- 16. 的Rails.root.join將錯過在某些條件下,Rails.root路徑
- 17. 在某些條件下跳過specflow規範
- 18. 通過在某些條件下減去值來更新Mysql列?
- 19. 阻止訪問基於某些條件下某些航線 - angularjs
- 20. jQuery - 在多個條件下過濾
- 21. 在列上過濾,除非在某個不同列中的某些情況下
- 22. Wordpress只有在某些條件滿足時才添加動作和過濾器
- 23. 過濾條件
- 24. Ansible/jinja2:在條件下使用過濾條件
- 25. REST過濾條件使用Where過濾條件和/或條件
- 26. 在有條件的條件下跳過某些條件,但沒有生成額外的步驟?
- 27. Qt小部件在某些條件下無法重繪
- 28. fopen和空文件只在某些條件下
- 29. 防止git在某些條件下壓縮任何文件
- 30. 基於某些條件
試試這個 - > http://stackoverflow.com/questions/949246/how-to-get-all-classes-within-namespace – bleeeah 2012-08-09 11:29:01