Видимо, серия Microsoft Magic скоро станет самой большой серией постов в этом блоге :)
Итак, задача очень распространенная. Есть в шарике стандартный список Links. Если мы хотим создать инстанс этого списка для собственных целей, это делается очень просто, создаем айтем ListInstance, и заполняем его примерно следующим XML-ем:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ListInstance Id=""
Title="$Resources:core,linksList"
OnQuickLaunch="FALSE"
TemplateType="103"
FeatureId="00bfea71-2062-426c-90bf-714c59600103"
Url="PersonalLinks"
Description="">
<Data>
<Rows>
<Row>
<Field Name="ID">1</Field>
<Field Name='URL'>http://google.ru, Поиск Google</Field>
</Row>
<Row>
<Field Name="ID">2</Field>
<Field Name='URL'>http://omlin.blogspot.com, Блог Омлина :)</Field>
</Row>
</Rows>
</Data>
</ListInstance>
</Elements>
Ну и дальше, всё это добавляется в фичу и успешно деплоится.
И вот, мне потребовалось контент этого списка локализовать. Ну например, чтобы у америкосов был google.com, а у китайцев - baidu.com. Создаем ресурсный файл, ну и выносим ссылки. Все вроде просто. Но вот тут всплыл вдруг такой эксепшен:
Недопустимый URL-адрес: $Resources: TestResources. >> в Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionListInstances(SPFeaturePropertyCollection props, SPSite site, SPWeb web, Boolean fForce)
Нерабочий вариант:
<Row>
<Field Name="ID">1</Field>
<Field Name='URL'>$Resources: TestResources, Links_ItemUrl1</Field>
</Row>
Совершенно случайно, обнаружился рабочий вариант. Сравниваем:
<Row>
<Field Name="ID">1</Field>
<Field Name='URL'>$Resources:TestResources, Links_ItemUrl1</Field>
</Row>
No comments :)
P.S. Актуально для полей типа URL в любых списках.