【发布时间】:2016-08-02 10:55:59
【问题描述】:
我们使用基础设施库已经很长时间了。但是现在我们遇到了一个问题,这里已经解决了Cannot select Infragistics controls in winform designer。
我现在更具体的问题是,为什么我们所有同事的电脑都没有出现这个问题,而只出现在我的电脑上?我们有相同的 Visual Studio 解决方案,所有源代码都来自一个 subversion 存储库。
我们决定将 infragistics dll 的副本放到项目中的控件目录中,这样我们以后可以通过将文件复制并粘贴到目标目录中来非常轻松地部署它(但我们仍然需要一个安装工具来安装第一次)。
我们如何确保满足以下要求(有用与否)?
- 仍然可以通过复制和粘贴来更新应用程序。
- developper 通过将所需的基础 dll 复制到控制目录(然后复制到应用程序可执行目录)来跟踪它们。
- 没有出现上述链接的问题
也许我们错过了一些重要的事情?
- 通过简单地将较新的文件复制到应用程序目录来更新应用程序是不好的做法吗?或者在某种程度上它甚至是“非法的”?
- 基础设施工具需要通过 setup 或 msi 安装程序安装吗?或者复制它们就足够了?
[编辑#1]:
为了澄清事情,因为我知道出了什么问题(请参阅上面的链接)以及可能的解决方案是什么,我需要一些很好的论据来支持或反对不使用控制目录,以了解我们在没有设置的情况下部署应用程序的做法当它更新时。我们需要让我们的客户能够在没有设置的情况下更新我们的应用程序,因为在他的工厂里他需要一次更新几台计算机,如果他能够在不需要设置的情况下做到这一点,那就更多了与设置方式相比具有成本效益。
【问题讨论】:
-
一些 DLL 需要使用 regsvr32 注册,这是安装程序通常会处理的事情。也许这就是问题所在?
-
你摆脱困境的方式是一种非常糟糕的做法。您永远不能假设 GAC 有可用的适当程序集。必须始终使用引用程序集来构建程序。就像您对 .NET 框架程序集所做的那样,例如,存储在 c:\program files (x86)\reference 程序集中。如果供应商的安装程序没有提供它们,那么您必须创建它们,在众所周知的位置制作您自己的副本。然后将它们检查到源代码控制中,这样一两年后您仍然可以构建。
-
@Hans Passant:通过使用我们解决方案文件夹中的控制目录,我们认为它是正确的。但看起来 (stackoverflow.com/questions/16320746/…),这会导致一些意想不到的行为。我有同样的问题,但我的同事没有。
-
您是否使用 Infragistics 提供的工具来更新您的项目?您的 controls 目录 是否也位于每台 PC 的本地?引用固定的 DRIVE+LOCATION 可能会导致其他 PC 出现问题,反之亦然
-
因为我不是项目的主要开发者,所以我不知道是否使用了该工具,但第二点不是问题——我们在项目驱动器和目录上都使用相同的目录结构。
标签: c# dll infragistics gac