Не удалось определить определение функции с идентификатором - неизвестный GUID

Я занимаюсь разработкой функции для установки веб-части со связанным списком и экземпляром списка. При развертывании списка регистрируется следующее сообщение:

Failed to determine definition for Feature with ID
'cdca545a-333a-4b3f-ba15-ac3cdbb12312'.
Skipping this feature for element querying consideration. 

(для ясности добавлены разрывы строк)

Я читал статьи в различных блогах, в которых предлагается выполнить поиск по функциям для выявления проблемной функции. Для поиска в каталоге Sharepoint 12 я загрузил версию grep, которая поддерживает поиск подкаталоги, однако следующей команде не удалось найти совпадений ни на моей виртуальной машине разработки, ни на сервере Live:

grep -S cdca545a-333a-4b3f-ba15-ac3cdbb12312 <path to \12\>

И не делает:

grep -S -i cdca545a <path to \12\>

Моя машина для разработки состоит из Windows 2003 R2, Windows Sharepoint Service 3.0 SP1, Visual Studio 2008 с STSDev 2008.

В настоящее время функция развертывается, но список не может быть создан, и я пытаюсь преодолеть шум файла журнала, чтобы добраться до корня проблемы.


person Richard Slater    schedule 31.03.2009    source источник
comment
Идентификатор упомянутой вами функции (cdca545a-333a-4b3f-ba15-ac3cdbb12312) является идентификатором вашей собственной функции? Возможно, вы случайно удалили какую-то другую функцию из каталога компонентов SharePoint.   -  person LeonZandman    schedule 31.03.2009
comment
FeatureID не принадлежит мне, завтра я проверю на рабочем сервере.   -  person Richard Slater    schedule 01.04.2009
comment
Я просмотрел действующий сервер, но до сих пор не могу найти этот GUID.   -  person Richard Slater    schedule 01.04.2009


Ответы (2)


Вы можете попробовать перечислить установленные определения функций в своей ферме SharePoint. Вот пример кода, который печатает идентификатор функции и отображаемое имя для каждой установленной функции:

SPFeatureDefinitionCollection featureDefinitions = SPFarm.Local.FeatureDefinitions;
foreach (SPFeatureDefinition featureDefinition in featureDefinitions)
{
    Console.WriteLine("{0}: {1}", featureDefinition.Id, featureDefinition.DisplayName);
}
person LeonZandman    schedule 31.03.2009
comment
Спасибо за фрагмент кода, к сожалению, ни один из идентификаторов функции не соответствует ни в моей среде разработки, ни на производственном сервере, на самом деле в Dev 33 на производстве есть только 31 функция, это правда? - person Richard Slater; 01.04.2009
comment
Итак, вы обыскали 12-улей на предмет наличия идентификатора функции и ничего не нашли? Вы уверены, что правильно использовали Grep? Обычный (UNIX) Grep использует параметр -R вместо -S для выполнения рекурсивного поиска. - person LeonZandman; 01.04.2009
comment
Вы можете попытаться удалить эту функцию, введя команду stsadm -o uninstallfeature -id cdca545a-333a-4b3f-ba15-ac3cdbb12312 -force - person LeonZandman; 01.04.2009

Я не уверен, но проблема может быть связана с функцией экземпляра списка.

В манифесте элемента функции вы можете определить атрибут «FeatureId», который должен указывать на функцию, которая содержит определение списка для использования при создании экземпляра списка.

Итак, вот два возможных источника ошибки.

  1. Если этот FeatureId не определен, функция предполагает, что определение списка определено внутри той же функции (функция экземпляра списка). Если у вас есть две отдельные функции для определения и экземпляра, это может привести к этой ошибке.

  2. Как я уже сказал, FeatureId должен быть GUID функции, определяющей используемое определение списка. Возможно, вы заменили этот GUID новым сгенерированным, предполагая, что это не FeatureId объекта определения списка, а идентификатор самого экземпляра списка, когда он создается в MOSS.

У меня никогда не было этой проблемы, поэтому я мог только догадываться, в чем может быть причина вашей ошибки.

Возможно, это запись в блоге может помочь вам в дальнейших исследованиях.

person Flo    schedule 31.03.2009