引用DLL,编译,DLL版本控制

时间:2012-09-04 19:52:36

标签: c# .net

在.NET工作多年后,我问了一个基本问题。刚出大学的一个孩子问我这个,我突然感到困惑!

我在.NET项目中引用了IBM DATA DB2 DLL。我们最初使用的版本是9.7.0.2。因此,在我们运行一些测试之后,我们将IBM DATA DLL升级到版本9.7.6.2。

现在的问题是,我应该重新编译我的代码然后运行它还是我可以直接替换构建目录中的IBM DATA DLL并且运行正常吗?

我们什么时候应该理想地重新编译代码?

由于 超声处理

5 个答案:

答案 0 :(得分:3)

这取决于你如何引用DLL。在解决方案资源管理器中,选择您的项目并展开其中的引用。选择DLL并查看属性“特定版本”的属性编辑器窗口。如果设置为false,那么你只需要替换输出中的二进制文件,否则如果找不到精确版本的DLL,你的应用程序就会抛出错误。

答案 1 :(得分:2)

除非您专门定位库(when using entity framework and mysql adapter),否则不得更改库的版本,然后您需要更改版本号才能工作。其他情况发生在API更改时(不经常,不理想but it happens)。

答案 2 :(得分:2)

这实际上都取决于DLL和生成它的第三方。您需要查看文档并查找已弃用和已修改的函数(您是否正在调用它们中的任何一个?)即使文档说没有任何更改和弃用,您仍应进行回归测试。文档不是代码,代码是重要的事实。

在一个完美的世界中,在公共API中不会有任何改变或被弃用,DLL(接口)的编写者只会添加新功能。不幸的是,我们不能指望这一点。

简而言之:如果您在DLL中调用的任何函数被修改或弃用,则必须重建,否则不需要。

答案 3 :(得分:1)

通常,第三方DLL应该向后兼容。但是,情况并非总是如此,您应该在升级时重新编译以确保它是。如果在没有编译的情况下交换DLL版本,则可能会遇到可能通过编译/测试轻松检测到的各种运行时错误。

答案 4 :(得分:0)

您不需要重新编译代码。这是动态链接库的好处。