Visual Studio Setup Project - 检测到依赖项

本文关键字:依赖 检测 Studio Setup Project Visual | 更新日期: 2023-09-27 17:56:29

我对VS2010中的旧安装项目有问题。 请不要责怪我使用它。 这是一个无法改变的公司决定。 穷到我不得不处理它。

我认为我们得到的是很常见的:一些项目的解决方案。 项目引用程序集。 其中一些是第三方组件。 它们都引用到/来自同一个单独的文件夹(不是 GAC 或类似 C:''Programs...)。 我们只是不引用已安装的版本。 我们希望将它们全部保存在一个地方。

重点来了...项目本身指向我们想要的文件夹。构建和运行都很好。当我检查安装项目时,一些第三方程序集取自我们的特定文件夹,其他则取自 C:''Programs...

我只是不知道为什么。 我似乎无法影响这一点。 即使手动编辑.vdproj文件(可以设置"GAC:FALSE")也无济于事! 我们需要引用文件夹中的特定 *.dll。

有人对此有想法吗? 到目前为止,我还没有找到一些东西...

干杯!延斯

Visual Studio Setup Project - 检测到依赖项

这就是 VS 的行为方式。即使您告诉他在您自己的文件夹中搜索您的第三方 dll,如果它在 GAC 中找到相同的 dll,它也会从那里引用它。在 GAC 中没有 dll 的计算机上,它将从你的文件夹中引用它。换句话说,如果部署应用程序的计算机在引用它们的文件夹中具有所有第三方程序集,并且该文件夹存在于目标计算机上,则应用程序不会崩溃,即使 dll 不在您自己的计算机上看到的目标中也是如此,并且将使用该文件夹中的程序集。

也许有人在Visual Studio中摆弄默认的引用路径。如果您查看本文,大约在一半时,它解释了用于查找引用的程序集的注册表项:

http://msdn.microsoft.com/en-us/library/wkze6zky(v=vs.100).aspx

我认为 VS 搜索机制将在构建时浏览此列表,您最终可能会得到一个相当奇怪的组合,特别是如果某些程序集依赖于其他程序集并且程序集版本不同。因此,如果您从某个程序集开始,该程序集需要具有特定版本的其他程序集,它将追逐该目录列表,直到找到它们。

我认为 VS 默认情况下会从 GAC 获取程序集以供参考是不正确的。.NET 运行时将在你运行程序时执行此操作,但在开发时,所有 MS 程序集(例如)都是从 SDK 安装而不是从 GAC 引用的。GAC 是用于运行需要这些程序集的程序的存储库,而不是开发版本的参考。