我有一堆用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. preg_replace在某些條件下
- 3. git-過濾某些文件
- 4. AngularJS過濾器在某些領域與「或」條件
- 5. 在某些條件下匹配流
- 6. 在某些條件下還原矩陣
- 7. 在某些條件下不返回poshytip
- 8. Excel VBA在某些條件下刪除某些行
- 9. 過濾,直到滿足某些條件首次
- 10. Django過濾對象的某些參考條件
- 11. 通過在某些條件下減去值來更新Mysql列?
- 12. 在某些條件下跳過specflow規範
- 13. Ansible/jinja2:在條件下使用過濾條件
- 14. REST過濾條件使用Where過濾條件和/或條件
- 15. 在有條件的條件下跳過某些條件,但沒有生成額外的步驟?
- 16. 防止git在某些條件下壓縮任何文件
- 17. Qt小部件在某些條件下無法重繪
- 18. 基於某些條件
- 19. PHP - 基於某些條件
- 20. 隱藏某些Magento屬性過濾器
- 21. scapy無法過濾某些數據包
- 22. ElasticSearch查詢過濾掉某些相機
- 23. 過濾某些元素的BBCodes
- 24. 如何過濾jQuery手機過濾某些字段
- 25. 當某些條件必須鏈接時,最有效的過濾方法?
- 26. 如何編寫與R中某些條件相匹配的過濾器?
- 27. 如何基於某些條件過濾列表與另一個列表?
- 28. 如何使用SSRS中的某些過濾條件生成報告?
- 29. SQL條件過濾
- 30. 在一列中過濾關於某個條件的矩陣
試試這個 - > http://stackoverflow.com/questions/949246/how-to-get-all-classes-within-namespace – bleeeah 2012-08-09 11:29:01