Разработка в Visual Studio 2010 и Sharepoint 2007. Использование новых SPSite создает ошибки

Я переписываю консольное приложение с помощью Visual Studio 2010. Исходное приложение было написано с использованием Visual Studio 2008 и работает нормально, но не имеет никаких тестов, связанных с ним. Следовательно, идея переписывать его с помощью тестов.

Оба приложения работают с сайтом Sharepoint 2007.

Проект компилируется, но когда я пытаюсь запустить его, код ниже бросает ошибки.

SPSite spsite = null;
 SPSecurity.RunWithElevatedPrivileges(delegate() {
 spsite = new SPSite("http://sharepointdev");
 });

 return spsite;

Я запускаю это на Windows Server 2008. Я установил целевой платформой для сборки как x86 (это в свойствах моего проекта), а в Security я проверил, что это приложение полного доверия. Я также запускаю проект в качестве администратора. Я также установил.NET Framework 3.5

Это просто случай, когда SharePoint 2007 просто не хочет играть с Visual Studio 2010, или есть что-то еще, что я еще не рассматривал?

Я попытался выполнить поиск в Интернете и stackoverflow, но все статьи, которые я видел, касаются попытки заставить Visual Studio 2010 работать с Sharepoint 2010.

Точная ошибка, которую я получаю, это "Ссылка на объект, не установленная на мгновение объекта", при этом отладчик высоко освещает вызов SPSecurity.

Если я просто использую этот код

using(SPSite spsite = new SPSite("http://sharepointdev")){

Затем я получаю FileNotFoundException, что не совсем так! У меня есть много приложений, которые находят сайт, использующий этот URL. Я подозреваю, что сообщение об ошибке пытается сказать, что моему приложению 2010 не разрешен доступ к сайту, но я не нашел никаких подсказок относительно того, почему это должно быть.

Любые подсказки, намеки или предложения с благодарностью принимаются.

РЕДАКТИРОВАТЬ

Я снял код с моего проекта VS 2010 и бросил его в новый проект VS 2008, и он сразу же сработал.

ДАЛЬНЕЙШЕЕ ИЗМЕНЕНИЕ

Я создал небольшое консольное приложение в VS 2010. По умолчанию он использует.NET Framework 4, мне пришлось установить это в.NET Framework 3.5. Я также установил цель платформы как "Любой процессор", и она работает. Это заставляет меня задаться вопросом, есть ли проблема с тестовым проектом, связанным с моим первым приложением?

Я повторно создал консольное приложение, но на этот раз без связанного с ним тестового проекта (тестовый проект был библиотекой классов и работал с NUnit). Это бежало без проблем. Я думаю, проблема заключается в тестовом проекте и что-то там, что решение не нравится. Наверное, там построить там не нравится

1 ответ

TL; DR; Ответ: Переключитесь на любую сборку ЦП - не выбирайте x86.

Раньше я сталкивался с этой проблемой с помощью консоли. Я получил ту же ошибку FileNotFound, но ссылаюсь на DLL, а не на ваш сайт SharePoint. Копая немного, я обнаружил более глубокую ошибку BadImageFormat и понял, что он жалуется на DLL или EXE. Я предположил, что это связано с привязкой от x86 к MSIL. Там много вещей, которые должны произойти с маршал звонки между ними, и я думаю, это привело к несовместимости. Когда я включил его (и проверил все мои проекты библиотеки поддержки), построенный для MSIL/Any CPU, приложение работало без проблем и никаких других изменений.

Я использую Visual Studio 2010 для разработки для SharePoint 2007 весь день в течение долгого времени, и единственные проблемы, с которыми я столкнулся, не связаны с этой комбинацией. Чаще всего это причуда стороннего дополнения, которое я использую. Почти для всех моих разработок я начинаю с шаблонов WSP Builder, но они неэффективны и имеют несколько причуд, с которыми вам приходится работать (некоторые достаточно серьезные, чтобы удалить ваш сервер SharePoint), поэтому я не виню VS 2010 напрямую.

licensed under cc by-sa 3.0 with attribution.