无法确定具有ID的功能的定义... - 未知的GUID

时间:2009-03-31 14:31:11

标签: c# sharepoint sharepoint-2007 web-parts

我正在开发功能以安装具有关联列表和列表实例的WebPart。在部署列表时,将记录以下消息:

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

(为了清晰起见,添加了换行符)

我已阅读各种博客上的文章,建议搜索功能以识别有问题的功能。要搜索Sharepoint 12目录,我已经下载了支持搜索子目录的grep版本,但是以下命令无法在我的开发虚拟机或实时服务器上找到任何匹配项:

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,带有STSDev 2008的Visual Studio 2008。

目前该功能已部署但列表无法实例化,我正在尝试通过日志文件噪声来解决问题的根源。

2 个答案:

答案 0 :(得分:3)

您可以尝试枚举SharePoint场中已安装的功能定义。下面是一些示例代码,用于打印每个已安装功能的功能ID和显示名称:

SPFeatureDefinitionCollection featureDefinitions = SPFarm.Local.FeatureDefinitions;
foreach (SPFeatureDefinition featureDefinition in featureDefinitions)
{
    Console.WriteLine("{0}: {1}", featureDefinition.Id, featureDefinition.DisplayName);
}

答案 1 :(得分:0)

我不确定,但问题可能与列表实例功能有关。

在要素的元素清单中,您可以定义属性“FeatureId”,该属性必须指向包含创建列表实例时要使用的列表定义的要素。

所以这里有两个可能的错误来源。

  1. 如果未定义此FeatureId,则该功能假定列表定义在同一功能(列表实例功能)中定义。如果定义和实例有两个独立的功能,则可能会导致此错误。

  2. 正如我已经说过的,FeatureId必须是定义要使用的列表定义的功能的GUID。也许您用新生成的GUID替换了这个GUID,假设这不是列表定义的FeatureId,而是列表实例本身在MOSS中创建时的标识符。

  3. 我自己从未遇到过这个问题,所以我只能猜出你的错误可能是什么原因。

    也许这blog entry可能会帮助您进一步调查。