【问题标题】:Visual Studio Setup Project - Detected DependenciesVisual Studio 安装项目 - 检测到的依赖项
【发布时间】:2014-04-04 08:54:06
【问题描述】:

我对 VS2010 中的旧设置项目有疑问。请不要怪我使用它。这是公司的决定,不能改变。够可怜的,我必须处理它。

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

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

我只是不知道为什么。我不能像看起来那样影响这一点。即使手动编辑 .vdproj 文件(可以设置“GAC:FALSE”)也无济于事!我们需要在我们的文件夹中引用特定的 *.dll。

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

干杯! 詹斯

【问题讨论】:

  • 我忘了说,刷新检测到的依赖关系没有帮助。对不起!

标签: c# visual-studio-2010 reference setup-project


【解决方案1】:

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

【讨论】:

  • 感谢您的想法!但我真正不明白的是,我在 C:\Programs...、GAC 和指定文件夹中都有大部分 *.dll。为什么不是所有引用然后设置为 GAC 或 C:\Programs...?为什么这么随机?一些来自 C:\Programs...,一些来自我的文件夹...?
  • @schwebbe 在您的目录和 GAC 中找到的那些都是从 GAC 引用的。使用 Windows Installer 安装的 Dll 通常也在 GAC 中注册,即使您从文件夹中引用它们,路径也指向 GAC。您仅在文件夹中复制+粘贴的 Dll 具有指向您的文件夹的参考路径,因为它们尚未在 GAC 中注册。
  • 抱歉,但我必须不同意,因为我所说的程序集肯定都已安装和注册,因为它们都带有相同的产品。它是一个组件库。我会再次检查,但我很确定......
  • ok 更多解释...程序集位于 C:\Windows\Microsoft.NET\assembly\GAC_MSIL、C:\Windows\assembly 和我们希望它们所在的文件夹中取自。对于他们中的一些人来说,事情就是这样发生的,正如我们想要的那样,即使他们已经注册了......很困惑...... :-(
  • 那我就没主意了...我唯一能想到的是GAC中的程序集和您文件夹中的程序集不是同一平台(x86/x64)或同一版本.
【解决方案2】:

也许有人摆弄了 Visual Studio 中的默认引用路径。如果您看这篇文章,大约一半的时候解释了用于定位引用程序集的注册表项:

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

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

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

【讨论】:

  • 好的......经过一些研究,我很确定这没有发生。机器上不存在此类密钥。无论如何,那是我做的,因为它是我的开发机器,在我使用它之前,甚至没有安装库......
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多