【发布时间】:2014-02-07 10:01:23
【问题描述】:
我的问题是一个简单的应用程序项目和一个带有一些 GAC 引用的类库项目,我将它们添加到文件部分(仅限应用程序项目的主要输出)。问题是安装程序真的想将项目中的所有非 Net GAC 文件添加到安装程序中,即使它们被明确设置为 Copy Local false(项目文件中为 false)。
我如何告诉 InstallShield 只使用 Copy Local 为 true 的依赖文件,而不是列表中的所有内容?
【问题讨论】:
-
Copy Local = False 是完全错误的设置。由于构建目录不再有副本,因此程序只有在 DLL 存储在 GAC 中时才能运行。它必须是真实的。当然,您必须部署您现在获得的副本,因为它不会在目标机器上的 GAC 中。一般来说,强烈避免将任何东西放在开发机器上的 GAC 中。
-
文件已在目标服务器上的 GAC 中准备就绪。这就是它被设计为使用该程序集的方式。所以我想要一个干净的设置,不包括该程序集的副本(较新/相同/较旧)。我首选的方法是将其与项目保持一致。但是 InstallShield 似乎确实忽略了您在项目中设置的任何 Copy Local 设置。无论如何都需要它。正如我在下面回答的那样,您必须将其排除在安装程序项目中。
-
奇怪。 “干净的设置”不是让我想到的词 :) 一定要把 GAC 存储多个版本的 DLL 的能力作为一个优势。
-
当你必须遵循以前建筑师的规则时就是这样...... :P 你应该看到我过来的一些设置项目的输出文件夹。对于许多未使用的 DLL 甚至是普通的 .Net 框架程序集来说,这真是太混乱了。所以我保持简约。
标签: dll gac installshield-le