强制我的应用程序使用特定版本的DLL

我有申请需要使用dll(也是我写的),由政府机构独立validation。 我们计划很少修改dll,因为需要重新validation。 我想防止我的应用程序无意中修改了这个dll。 有没有办法为dll创建哈希代码并将我的应用程序设置为仅使用此特定版本。

这样,如果有人修改了dll的一些代码,当我们构建并运行应用程序时,应用程序将无法加载dll(因为它已经更改)。

有什么想法/建议吗?

干杯,

詹姆士

使用强名称可以做到这一点,并防止其他人篡改您的程序集,但不会阻止您意外地进行,然后辞职。

我们使用独立的流程来启动我们的主要应用程序。 在启动主应用程序之前,启动应用程序MD5的所有assmeblies并将它们与它希望看到的那些列表进行比较,如果某些内容发生了变化,MD5将失败并且主应用程序未加载。

如果你真的想要编译时间检查,你可能会编写一个预构建步骤,它执行相同的MD5比较,如果它已经改变,则构建失败。

我知道如果你点击你的项目中的dll参考,你可以在其属性中选择“特定版本”并将其设置为True,这不会做你想做的事情吗?

菲尔

正如科林提到强命名,你的程序集将是关键,因为这包括版本控制和签署程序集。 以下几篇博客文章可以帮助您进行强大的命名和版本控制:

http://www.csharp411.com/net-assembly-faq-part-3-strong-names-and-signing/ (可能还值得阅读关于全局程序集缓存的下一部分)

http://philippetruche.wordpress.com/2008/08/12/net-assembly-versioning-lifecycle/