我正在制作一个模块化程序,它支持在插件目录中动态编译源文件。
我想要做的是加快加载时间,将编译后的程序集保存到单独的文件夹中。 当我的程序加载,并遇到要编译的源文件时,我希望它检查是否有已编译的程序集,并使用它如果源文件从那时起没有更改。如果更改了源文件,则重新编译并覆盖已保存的程序集。
我的问题是,跟踪哪个源文件属于哪个程序集是一种有效的方法,以及跟踪源文件自上次加载以来是否已更改的有效方法。
答案 0 :(得分:3)
更改跟踪:保留源文件的MD5 / CRC哈希记录和记录上次修改日期,将两者关联起来以确定文件是否已更改。
至于source->汇编,我建议convention over configuration。
答案 1 :(得分:1)
你为什么要这样做呢?任何打算使用C#为您编写插件的人都将知道如何使用Visual Studio并构建DLL。你最好定义一个DLL接口来代替插件使用。那么您就不必担心加载任何类型的时间。
如果应该从程序本身内部更改“插件”,那么您应该只在程序中更改插件时进行编译,而不是试图查看事情何时发生变化。
答案 2 :(得分:0)
保证这100%的唯一方法(我能想到的)是保留原始源文件的副本以及编译版本。然后你可以在原始文件和新文件之间进行文件比较,看看它们是否已经改变,如果是,则执行编译。
答案 3 :(得分:0)
我的问题是,跟踪哪个源文件属于哪个程序集是一种有效的方法,以及跟踪源文件自上次加载以来是否已更改的有效方法
一种方法是:
FileSystemWatcher
跟踪文件更改