- Вам необходимо избавиться от объекта SPSite / SPWeb, обычно это делается в предложении
using
. - Вам не нужно использовать абсолютный путь (жесткий код) вполучатель функции, так как функция уже имеет веб-область / область действия
- ваш
XmlPath
обычно должен указывать на файл на сервере Sharepoint, который вы также развернули в своей функции - так как получатель функции работает после все нормальные файлы были развернуты, все в порядке.
Без лишних слов, немного другой код:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
//Web scoped feature?
//spWeb = (SPWeb) properties.Feature.Parent;
//assuming Site scoped feature
spWeb = ((SPSite) properties.Feature.Parent).RootWeb;
using (spWeb)
{
string XmlPath = properties.Definition.RootDirectory + @"\Xmlfile\groups.xml"
CreateGroups(spWeb, XmlPath);
}
}
Так как же получитьXML-файл в "\ Xmlfile \ groups.xml"?Просто создайте модуль!(Добавить новый элемент> Модуль) elements.xml вашего модуля должен выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Xmlfile" Path="Xmlfile">
<File Path="groups.xml" Url="Xmlfile/groups.xml" />
</Module>
</Elements>
Конечно, вам нужно добавить файл groups.xml в этот модуль (Контекстное меню> Добавить существующийitem), чтобы это работало.
Также обратите внимание, что вы можете легко отлаживать приемники компонентов, просто убедитесь, что для конфигурации развертывания установлено значение «Без активации» (Свойства проекта> Sharepoint> Активная конфигурация развертывания) - так вам понадобитсявручную активировать функцию на сайте (вместо того, чтобы Visual Studio делал это автоматически для вас в режиме отладки), - но отладка будет работать без сбоев.