Рубрики
sharepoint

Службе таймера не удалось инициализировать свою конфигурации. Проверьте базу данных конфигурации.

Проблема возникла второй раз, помогает чистка кэша таймера http://soerennielsen.wordpress.com/2009/01/14/fixing-the-timer-service-when-everything-breaks-down/ или http://tomblog.insomniacminds.com/2008/07/30/sharepoint-internals-clearing-configuration-cache-caveat/

P.S. Ошибку в названии (тексте ошибки) не я допустил, так написано в логах 

:)
Рубрики
sharepoint

Получение ссылки на элемент списка в SharePoint Javascript COM

Работая с клиентской объектной моделью SharePoint через Javascript, у меня появилась необходимость получить ссылку на элемент списка. Причем если список является библиотекой, то всё просто — нужно получить поле FileRef — оно и хранит ссылку на файл библиотеки документов.

Со списком немного сложней, но есть поле FileDirRef, хранящее путь до списка, например, http://site/Lists/BrandCentralNews. Значит можно добавить название страницы отображения с идентификатором, вот так: http://site/Lists/BrandCentralNews/Dispform.aspx?ID=3.

Ниже основные участки кода:

//Указываем какие поля получить из списка в CAML-запросе
    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml("<View><ViewFields> \
	    <FieldRef Name='ID'></FieldRef> \
	    <FieldRef Name='FileDirRef'></FieldRef> \
	    <FieldRef Name='Title'></FieldRef> \
    </ViewFields> \
    <Query><OrderBy><FieldRef Name='Modified' Ascending='False' /></OrderBy></Query><RowLimit>100</RowLimit></View>");
    
    this.collListItem = oList.getItems(camlQuery);

    ...

    var oListItem = listItemEnumerator.get_current();
    var url = oListItem.get_item('FileDirRef') + "/Dispform.aspx?ID=" + oListItem.get_item('ID');

Кажется, что ссылка должна храниться в поле LinkTitle, но нет, видимо поле формируется в runtime, а не хранится в БД SharePoint.

Рубрики
sharepoint

Unit-тесты SharePoint 2013 в Visual Studio 2013: PlatformNotSupportedException

UPD 17 февраля 2015: Коллега, подсказал, что у него в январе 2015 года получилось запустить Unit-тесты из VS2013 через NUnit Test Adapter и отлаживать. Возможно повлиял какой-то апдейт студии, который к этому времени появился.

Использовать Unit-тесты SharePoint очень удобно при любой разработке. Хотелось иметь такую возможность и в SharePoint 2013 из Visual Studio 2013. В интернетах нигде информации не нашёл, а ошибка повторялась:

Ошибка unit-тестов в SP2013 и VS2013
Ошибка unit-тестов в SP2013 и VS2013

PlatformNotSupportedException was unhandled by user code:
An exception of type ‘System.PlatformNotSupportedException’ occurred in Microsoft.SharePoint.dll but was not handled in user code
Additional information: Microsoft SharePoint is not supported in 32-bit process. Please verify that you are running in a 64-bit executable.

Сначала я использовал встроенный проект MSTest. Ошибка происходит при попытке создать SPSite, он работает из x64 сборки, а тесты, видимо, запускаются под x86(32). Как я не пытался решить с помощью настройки TEST->Test Settings->Default Processor Architecture -> X64, то не помогало.

В NUnit то же самое. Но тут я продвинулся:)
1. Нужно установить NUnit testing framework на компьютере;
2. Дальше для тестового проекта (предварительного созданного) через меню Manage NuGet Packages for Solution установить NUnit;
3. Собрать сборку тестового проекта
4. В PowerShell перейти в папку с установленным nunit.exe — это утилита запуска NUnit тестов
5. Запустить из папки nunit.exe «путьДоПапки/YourTestProject.dll»
6. В запустившейся утилите можно запускать тесты, внутри которых корректно работает SPSite и другие классы Microsoft.Sharepoint.dll !
7. Подключить Visual Studion 2013 для отладки к процессу nunit-agent.exe и можно даже отлаживать тесты.

В итоге задача решена, но, конечно, хотелось бы запускать и дебажить тесты напряиую из VS. Работаю над этим.
UPD: задача решена, см. начало статьи