我在VS 2010中有一个安装部署项目。该项目与VS 2010的GUI界面完美编译,但每当我试图通过VS cmd (devenv.com)编译它时,它会出现这个错误:
ERROR: Unable to update the dependencies of the project.
请注意,错误中没有提到dll(例如,错误不包含"无法确定对象' xxx '的依赖项")。
请不要告诉我清理这个设置中的所有文件并从头开始-这不是一个真正的解决方案!我有5个项目有这个错误,我不想每一个都重新安排。更重要的是,这并不能保证这个问题将来不会再发生。
非常感谢!
我曾经在这些安装程序停止工作(无论出于何种原因)时从头开始重新构建它们,但是我发现了一种更快(而且更不容易出错)的解决方案。这对我很有效。也许它对你有用。
- 通过IDE从解决方案中删除安装程序项目界面
- 将安装程序项目添加回您的解决方案(添加>现有项目…)
修复程序没有解决我的计算机上的问题(在两台计算机上尝试过,重新启动了所有这些)
相反,我使用源代码管理来找出我的。vdproj发生了什么。
似乎额外的损坏条目被添加到.vdproj的"File"
部分。
假设您得到一个错误,如
错误:无法更新项目的依赖项。无法确定对象'AutoMapper.DLL'的依赖项。
在你的。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-..
开始到下一个块的整个部分
我通过手工编辑vdproj并删除层次结构和文件部分,然后重建vdproj来修复这个问题
参见:安装项目错误:无法更新项目的依赖项
这对我有用:
- 从VS2010 运行一个干净的解决方案命令
- 资源管理器中的开源代码文件夹
- 搜索*.exe文件,按位置排序
- 手动删除发布文件夹 中的所有文件
如果存在被锁定的some_project.vshost.exe文件,在VS中打开该项目的属性,在debug下取消选中"启用Visual Studio托管进程"。然后把它也拿掉。
这是从@timB33的外部链接复制的,它可以工作。所有到MS热修复的链接似乎都坏了,所以这是我唯一能找到的修复方法,而不需要删除和重新创建安装项目。
我一直使用这种方法来绕过这个bug,而不是重新构建我的安装项目。这适用于合并模块项目和安装项目。手动删除项目文件的Hierarchy and Files部分中的数据。
打开.VDPROJ文件
找到"Hierarchy"部分。删除所有内容,使部分看起来像这样:"层次结构"{}
找到"文件"部分。删除所有内容,使部分看起来像这样:"文件"{}
重新加载项目
重建项目
如果缺少某些内容,您可能需要重新添加项目输出
support.microsoft.com/kb/2286556
谢谢Hans,这个更新解决了我的问题。