Сообщения об ошибках в SharePoint иногда напоминают вердикты дельфийской пифии: то есть хрен поймёшь, что имелось в виду. Вот почему, например, такой вызов
SPList.GetItemById(-1)бросает исключение с таким сообщением:
One or more field types are not installed properly. Go to the list settings page to delete these fields.Где, казалось бы, связь? Но, как и в случае со словами оракула, смысл этого сообщения становится ясен не сразу, в данном случае - после изучения метода GetItemById в декомпиляторе. Оказывается, если переданный идентификатор элемента меньше нуля, то в формируемый CAML-запрос вставляется не поле ID, а поле BdcIdentity, которого в списке нет.