将所需的DLL包含到Windows项目中可以解决一个感知问题?

时间:2009-06-16 10:57:31

标签: windows deployment

我们最近决定开始向产品本身提供产品所需的某些DLL文件的版本。

这是为了防止(例如)在部署软件的服务器上更新MVC DLL文件并且产品无法正常运行,因为它是针对现在的DLL版本编写的。< / p>

如果特定版本的MVC DLL文件包含在产品中并且“本地”引用,则可以防止此问题发生。 (在理想情况下,将安装到目标服务器上的每个产品都将更新到最新版本,但这并不总是实用的)

我的担心和问题是,在以下情况下,这是否会给出错误的安全感或实际上是否应对问题:如果MVC DLL文件的1.0版依赖于标准Microsoft DLL库Y的方法X并且这个DLL文件更新了,我们会遇到产品破损的情况吗?

3 个答案:

答案 0 :(得分:2)

假设您的意思是MSVC(Microsoft Visual C ++)DLL,正确的解决方案是使用应用程序清单。 MSVC DLL支持并排安装(SxS)。这意味着这些DLL的新版本不会替换旧版本。您的应用程序清单告诉Windows您需要哪些DLL版本。

答案 1 :(得分:0)

我并不特别了解MVC,但是如果将依赖dll的冲突版本安装到目标计算机上的GAC上,则会遇到更大的问题,因为它将优先于本地文件使用。

答案 2 :(得分:0)

根据您制作最终产品的大小,请考虑静态链接您的计划。这将防止可怕的DLL地狱,因为你不必提供DLL。