我有需要使用dll(也是我写的)的应用程序,它已由政府机构独立验证。由于需要重新验证,我们计划很少修改dll。我想防止对我的应用程序拾取的这个dll的无意修改。有没有办法为dll创建哈希代码并将我的应用程序设置为仅使用此特定版本。
这样,如果有人修改了dll的一些代码,当我们构建并运行应用程序时,应用程序将无法加载dll(因为它已经更改)。
有任何想法/建议吗?
干杯,
詹姆斯
答案 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/