Visual Studio 安装项目 - 如何避免重复条目?

3

这是我第一次使用Visual Studio Setup创建安装程序,有一件事我不太明白。

我通过简单的拖放添加了想要的文件,但最终结果是安装程序创建了很多重复的条目,例如:

enter image description here

换句话说,对于我几乎所有的.dll文件,Visual Studio都会添加一个同名的重复.DLL文件,甚至无法删除。
虽然最终生成的安装程序仍然可以正常工作(因为我假设其中一个副本正在覆盖另一个),但它具有生成大量警告并使最终的.MSI文件几乎比所需的大小大一倍的烦人副作用。
我该如何避免这种情况?

请详细说明“我通过简单的拖放添加了所需文件”的步骤。 - Jazimov
@Jazimov:我从Windows资源管理器中拖动了所有想要包含在安装程序中的文件,并将它们放到屏幕截图中所见的“目标计算机上的文件系统->应用程序文件夹”条目中。这样可以正确地添加所有文件和子文件夹结构,唯一的问题是会生成重复条目。 - Master_T
你用了哪种Windows安装程序项目?听起来它正在获取主可执行文件的依赖项,并且你添加它们也是导致重复的原因。 - Mark Hall
@MarkHall:可能是这种情况...我该如何设置以禁用自动依赖项包含?我只想添加我在文件夹中拥有的文件,就这样...我不需要所有额外的东西。这可行吗? - Master_T
2个回答

1

我在更改项目的.NET版本后遇到了这个问题。即使创建新的安装程序项目,设置项目也没有自动更新,仍然会创建重复项。

我的解决方案:

  1. 右键单击设置项目,然后单击“属性”
  2. 单击“前提条件”
  3. 更改.NET版本以匹配主项目上的版本,并删除任何不正确的版本。
  4. 按确定
  5. 构建解决方案(重要)

现在应该已经删除了重复项。


0
从您在评论中的简要描述中,我们不清楚为什么会出现重复的DLL。但是如果您想调整已添加的内容,您有几个选项。
  1. 如果您想从应用程序文件夹中删除DLL,可以尝试从左侧窗格中选择应用程序文件夹,然后右键单击DLL以查看是否出现“删除”选项。如果有,您可以通过这种方式删除它。

  2. 如果DLL具有依赖项,则需要另一种方法来删除它:转到解决方案资源管理器中的安装程序项目条目,您可能会看到列在其下面的DLL。此外,展开检测到的依赖项列表以查看更多可能的DLL。您可以通过右键单击特定的DLL并选择“排除”来挑选要排除的DLL。成功排除后,应用程序文件夹窗格中的DLL列表将缩短。

这些建议应该可以帮助您克服当前的障碍。


谢谢您的回复。我已经找到了“排除”选项,但由于项目中有很多DLL文件,我想知道是否有一种方法可以避免在第一次创建时产生重复,而不是手动排除每一个。 - Master_T
您在原始帖中提到Visual Studio会添加“甚至无法删除”的重复DLL。此外,您似乎不愿意提供有关如何添加文件的详细信息。我了解拖放操作,但是除非我更多地了解您如何选择源文件,否则我无法完全理解您如何获得重复文件。我的答案 - 是正确的 - 告诉您如何删除重复项。也许您已经发现了“排除”选项(但出于某种原因之前拒绝提到它) - 但我还向您呈现了一个删除选项。我的答案至少在一定程度上有所帮助。 - Jazimov
我没有深入讨论,因为没有更多的细节 :) 我只是从文件夹中拖放文件,就这样。当你这样做时,它们会被添加到重复项中... 没有更多可说的了!你的回答确实有帮助,事实上,我现在正在使用排除选项。我只是在等待看看是否有更好的解决方案(即:避免首先生成重复项的方法)。如果没有人很快提供更好的解决方案,我将接受你的答案。 - Master_T
1
我想说的是:为了防止问题在第一时间发生,不要拖放重复的DLL或具有重复引用的DLL... 我所寻求的“细节”是让您透露出您是在将程序集拖放到列表中时复制条目的人。 “愚蠢”的VS设置项目只是满足您复制DLL条目的请求,因此会出现警告。 如果微软想要使这些设置项目“更智能”,他们可以提供逻辑来确定是否存在重复并自动清除它们 - 不幸的是,该功能尚不存在。 - Jazimov
2
这就是我想确认的,基本上只是VS变得“愚蠢”,而不是自动清除重复项...好的,那我就手动排除它们。感谢您的回答。 - Master_T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接