簡體   English   中英

以編程方式更改 DLL 內的 C# 代碼

[英]Change C# code inside DLL programmatically

我得到了不時更新/發布的 .net dll (最初,用 C# 編寫)。 我需要在此 dll 中修改一小部分代碼,以滿足我的使用需求。

我每次都可以使用dnSpy進行這些更改,但我不喜歡每次都手動進行。

是否有可能在 dll 中自動執行代碼更改過程,如何實現?
將 dll 轉換為 IL 並更改 IL 指令然后重新編譯它是否更容易,或者我應該完全反編譯為 C# 然后使用 Roslyn 重新編譯它?

我更改的代碼始終相同,並更改為相同的結果代碼。

您想要實現的一個可能的解決方案是Mono.Cecil

使用 Cecil,您可以加載現有的托管程序集、瀏覽所有包含的類型、即時修改它們並將修改后的程序集保存回磁盤。

這個庫被諸如coverlet之類的工具使用,這些工具可以動態更改程序集,以便能夠計算代碼覆蓋率。

話雖如此,我非常同意 Marc Gravell 的評論,乍一看這似乎是錯誤的方法,而改變設計會更合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM