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

时间:2009-05-21 09:28:19

标签: c# .net dll

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

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

有任何想法/建议吗?

干杯,

詹姆斯

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

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

菲尔

答案 2 :(得分:1)

正如Colin提到的强力命名,你的装配将成为关键,因为这包括版本控制和版本控制。签署大会。以下几篇博客文章可以帮助您获得强大的命名和优势;版本:

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

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