我正在製作一個模塊化程序,它支持插件目錄中源文件的動態編譯。插件編譯器結構?
我想要做的事情,加快加載時間,是編譯彙編到一個單獨的文件夾。 當我的程序加載,並遇到源文件進行編譯時,我希望它檢查是否有已編譯的程序集,並使用它如果源文件自以來沒有更改過。如果源文件已更改,則重新編譯並覆蓋保存的程序集。
我的問題是,跟蹤哪個源文件屬於哪個程序集,以及跟蹤上次加載後源文件是否發生更改的有效方法是什麼?
我正在製作一個模塊化程序,它支持插件目錄中源文件的動態編譯。插件編譯器結構?
我想要做的事情,加快加載時間,是編譯彙編到一個單獨的文件夾。 當我的程序加載,並遇到源文件進行編譯時,我希望它檢查是否有已編譯的程序集,並使用它如果源文件自以來沒有更改過。如果源文件已更改,則重新編譯並覆蓋保存的程序集。
我的問題是,跟蹤哪個源文件屬於哪個程序集,以及跟蹤上次加載後源文件是否發生更改的有效方法是什麼?
更改跟蹤:保留源文件的MD5/CRC哈希記錄&上次修改日期,將兩者關聯以確定文件是否已更改。
至於source-> assembly,我建議convention over configuration。
你爲什麼要這麼做?任何將要使用C#爲您編寫插件的人都將知道如何使用Visual Studio並構建DLL。你最好定義一個DLL接口來代替插件。那麼你不必擔心任何類型的加載時間。
如果「插件」應該從您的程序本身中更改,那麼您應該在程序中更改插件時進行編譯,而不是試圖查看何時發生更改。
的有效途徑我想問你的是,這將是一種有效的方法,來跟蹤其源文件屬於哪個組件,以及跟蹤是否一個源文件已經自去年負載被更改或不
的一種方式可能是:
FileSystemWatcher
跟蹤文件更改
注意:比利ONeal是正確的,你的方法可能有缺陷。你應該使用.NET的普通插件設計,但我想我會直接回答你的問題。 – Aren 2010-09-24 17:17:21
該類型的應用IM發展的將不會與一個普通的.Net插件設計正常工作..我沒有問批評這個問題。我問了這個問題,因爲我需要爲這種情況做一些具體的工作,需要一些見解。 – caesay 2010-09-24 17:26:54
@Tommy:你是被批評的原因是因爲你所要求的並沒有太大的意義。當某些事情沒有多大意義時,會有人回答你,提出針對問題的備選解決方案,以避免您詢問的原始問題。但是,如果你[拒絕考慮替代解決方案,而是抨擊那些花時間爲你寫信的人](http://blogs.msdn.com/b/oldnewthing/archive/2010/07/28/10043237 .aspx),你會受到批評。 – 2010-09-24 17:44:26