Когда я получаю эту ошибку, я обнаружил, что мой проект развертывания VS2010 (.vdproj) «поврежден».В частности, элементы в разделе FILE файла VDPROJ имеют идентификаторы GUID, отсутствующие в разделе HIERARCHY файла VDPROJ.Это подробно описано ниже.
1) Проекты развертывания VS2010 включают в себя следующие разделы:
"Hierarchy"
{
}
"Deployable"
{
"File"
{
}
}
2) Раздел HIERARCHY содержит GUID для каждого элемента (например, файла), добавленного в проект развертывания,Кроме того, каждый файл, добавленный в проект, отображается как элемент в разделе DEPLOYABLE> FILE .В следующем примере показана нормальная конфигурация для файла msimg32.dll .Обратите внимание на совпадающий GUID (т. Е. _1C15DB39774F7E79C84F1CC87ECFD60A) в разделах HIERARCHY и FILE .
"Hierarchy"
{
"Entry"
{
"MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A"
"OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D"
"MsmSig" = "8:_UNDEFINED"
}
}
"Deployable"
{
"File"
{
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A"
{
"SourcePath" = "8:MSIMG32.dll"
"TargetName" = "8:MSIMG32.dll"
… more information ...
}
}
}
3) Мои проекты развертывания VS2010 могут быть повреждены двумя способами:
a) Элемент в разделе FILE дублировани дублированному элементу присваивается GUID, который отсутствует в разделе HIERARCHY .
b) GUID, связанный с элементом в FILE *Раздел 1036 * был удален из раздела HIERARCHY (то есть элемент в разделе FILE потерян).
3a) ПримерПервая проблема - дублированный элемент в разделе FILE :
В этом примере файл msimg32.dll содержит две записи в разделе FILE .Первая (т. Е. Правильная) запись имеет соответствующий GUID (т. Е. _1C15DB39774F7E79C84F1CC87ECFD60A) в разделе HIERARCHY , но GUID для второй (т. Е. Ошибки) записи (т. Е. 2DDC4FA12BFD46DEAED0053D23331348AR) HY не отображается в HIN, который не отображается в HIN HAR section.
"Hierarchy"
{
"Entry"
{
"MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A"
"OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D"
"MsmSig" = "8:_UNDEFINED"
}
}
"Deployable"
{
"File"
{
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A"
{
"SourcePath" = "8:MSIMG32.dll"
"TargetName" = "8:MSIMG32.dll"
… more information ...
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2DDC4FA12BFD46DEAED0053D23331348"
{
"SourcePath" = "8:MSIMG32.dll"
"TargetName" = "8:MSIMG32.dll"
… more information ...
}
}
}
3b) Пример второй проблемы - потерянный элемент в разделе FILE :
В этом примере файл msimg32.dll имеет запись в разделе FILE .Но GUID, связанный с этой записью (т. Е. A515046ADA6244F2A260E67625E4398F), не имеет соответствующей записи в (т. Е. Отсутствует в) разделе HIERARCHY .
"Hierarchy"
{
}
"Deployable"
{
"File"
{
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A515046ADA6244F2A260E67625E4398F"
{
"SourcePath" = "8:MSIMG32.dll"
"TargetName" = "8:MSIMG32.dll"
… more information ...
}
}
}
4) Решение: для обоихпроблемы, показанные выше, решение состоит в том, чтобы удалить потерянный элемент в разделе FILE .
В следующем примере показано, как будет выглядеть раздел FILE в пункте 3а выше после удаления второй записи для msimg32.dll .
"Hierarchy"
{
"Entry"
{
"MsmKey" = "8:_1C15DB39774F7E79C84F1CC87ECFD60A"
"OwnerKey" = "8:_0C67A6B6004040DC93A0113E1100615D"
"MsmSig" = "8:_UNDEFINED"
}
}
"Deployable"
{
"File"
{
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1C15DB39774F7E79C84F1CC87ECFD60A"
{
"SourcePath" = "8:MSIMG32.dll"
"TargetName" = "8:MSIMG32.dll"
… more information ...
}
}
}
5) Я обнаружил, что поврежденные записи в VDPROJ были обнаружены только для:
- a) файлов сборок (т.е. DLL) из моих проектов на C # и
- b) обнаруженных зависимостей отмои C ++ проекты (например, version.dll, urlmon.dll)