使用devenv.com编译安装程序项目时出现错误:“无法更新项目的依赖项”。

29

我在VS 2010中有一个安装部署项目。 该项目在VS 2010的图形用户界面下编译得非常完美,但每当我尝试通过vs cmd(devenv.com)进行编译时,它都会出现以下错误:

ERROR: Unable to update the dependencies of the project.

请注意,错误消息中未提及任何dll(例如,错误消息没有包含“无法确定对象‘xxx’的依赖项”)。

请不要告诉我要清理此设置中的所有文件并从头开始 - 这不是真正的解决方案!我有5个项目都出现了这个问题,我不想重新排列每一个。而且,这也不能保证问题将来不会再次发生。

非常感谢!


3
http://support.microsoft.com/kb/2286556 - Hans Passant
2
该热修复的链接已经失效。 - gbro3n
安装VS2010 Service Pack 1解决了这个问题。 - IgorStack
6个回答

50

以前这些安装程序项目出现问题时(不论原因),我通常会从头开始重建它们,但我发现了一个更快、更可靠的解决方法。这对我很有效,也许对你有用。

  1. 通过IDE界面从解决方案中删除安装程序项目
  2. 将安装程序项目重新添加到解决方案中(添加>现有项目...)
  3. 重新构建

对我来说几乎每次都管用...


这对我也起作用了,尽管之后我不得不修复桌面和程序菜单的快捷方式目标。 - bic
是的,有时我必须重新链接一些东西,但它确实为我节省了大量时间和浪费的调试工作。 :) - John Kroetch
2
起初我并不相信这种方法,但是“删除出错的.vdproj文件,然后再次添加现有的.vdproj项目”方法对我奏效了。 - Sandeep
1
刚在 Visual Studio 2010 中遇到了相同的问题,移除并添加设置项目对我非常有效。 - David Fawzy
1
和Sandeep一样的评论,我不相信它会起作用,直到突然间,就这样了。 - AXMIM
谢谢您的回复!对我来说唯一的区别是,在构建vdproj时我必须删除导致问题的csproj。当然,删除csproj后,主输出也被删除,因此我必须确保重新将主输出添加到vdproj的文件系统编辑器中。 - Matthew

29

热修补程序并没有解决我的电脑上的问题(在两台计算机上尝试,重启所有操作后情况仍旧如此)。

相反,我使用源代码控制来找出我的 .vdproj 发生了什么问题。

看起来在 .vdproj 的 "File" 部分添加了额外的损坏条目。

假设您遇到如下错误:

ERROR: Unable to update the dependencies of the project. The dependencies for the object 'AutoMapper.DLL' cannot be determined.

在您的 .vdproj 中搜索 AutoMapper,您应该会发现它使用了几个 { }。

一个正常的条目看起来像这样:

        "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_263299FB43D185D41A44FBEE0253D3ED"
        {
        "AssemblyRegister" = "3:1"
        "AssemblyIsInGAC" = "11:FALSE"
        "AssemblyAsmDisplayName" = "8:AutoMapper, Version=1.1.0.188, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL"
            "ScatterAssemblies"
            {
                "_263299FB43D185D41A44FBEE0253D3ED"
                {
                "Name" = "8:AutoMapper.DLL"
                "Attributes" = "3:512"
                }
            }
        "SourcePath" = "8:AutoMapper.DLL"

相比之下,一个腐败的块在ScatterAssemblies部分缺少DLL的名称(在这种情况下是AutoMapper.DLL)。

删除这个腐败的条目,也就是从"{9F6F8455-..开始到下一个块的整个部分。


对我来说,这很有帮助,但还不够。然后我不得不在“解决方案资源管理器”中打开“检测到的依赖项”,然后对列表中的所有DLL执行排除操作。之后,它成功构建了。 - Alex
2
这个问题在我解决了一个漫长的合并冲突后出现了,我有两个空的ScatterAssemblies部分。删除和重新添加安装程序并没有解决我的问题。 - Neil Stoker

5

我已将外部链接的解决方案复制到了这个帖子中。 - gbro3n
在缺乏建议的热链接情况下,这对我有效。关闭VS,编辑vdproj文件,重新打开VS,该项目第一次完美构建。 - Reinstate Monica Cellio

2
这对我很有帮助:
  1. 从VS2010中运行清理解决方案命令
  2. 在资源管理器中打开源代码文件夹
  3. 搜索*.exe文件,按位置排序
  4. 手动删除Release文件夹中的所有文件

如果存在被锁定的some_project.vshost.exe文件,在VS中打开该项目的属性,并取消勾选“启用Visual Studio托管进程”下的调试。然后也将其删除。现在应该可以构建了。


为了删除我的锁定文件,我关闭了VS,然后删除了它,再重新启动。然而这让我想知道,如果仅仅重新启动VS是否就可以解决问题(有时候它确实可以解决一些奇怪的错误...) - David

2
这是从@timB33的外部链接中复制的内容,可以使用。所有指向MS hotfix的链接都似乎已经失效,所以这是我找到的唯一方法,可以修复问题而不必删除并重新创建设置项目。
我一直使用这种方法来绕过这个bug,而不是重建我的安装程序项目。这适用于合并模块项目和安装程序项目。手动删除项目文件中层次结构和文件部分中的数据。
  1. 打开.VDPROJ文件

  2. 找到“层次结构”部分。删除所有内容,使该部分如下所示: “Hierarchy” { }

  3. 找到“文件”部分。删除所有内容,使该部分如下所示: “File” { }

  4. 重新加载项目

  5. 重新构建项目

  6. 如果某些内容缺失,您可能需要重新添加项目输出


1

感谢@BrainCoder - 我重新启动后,尝试构建MSI时出现了TFS错误。一旦我签出了MSI项目,它就开始工作了。(我猜如果你有SP1,你不需要热修复程序)。 - PeterX
2
热补丁链接已损坏。 - gbro3n

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