W SharePoint 2007 problemu żadnego nie było, tworzyliśmy projekt, dodawaliśmy referencję, tworzyliśmy kod i F5. Z Visual Studio 2010 i SharePoint 2010 jest trochę inaczej :)
VS 2010 domyślnie tworzy projekty w .NET Framework 4.0, zaś SharePoint 2010 korzysta z .NET Framework 3.5 (dziwne czemu nie z 4.0… czy oni zawsze muszą być o technologię do tyłu?), więc już przy tworzeniu projektu, musimy wybrać odpowiedni target framework:
Jeżeli tego nie zrobimy nie będziemy mogli dodać biblioteki Microsoft.SharePoint.dll z zakładki .NET w oknie Add Reference (po prostu ta biblioteka tam widnieć nie będzie):
Jak już dodamy referencję napiszmy sobie kodzik wyświetlający nazwy wszystkich list:
using System;
using Microsoft.SharePoint;
namespace TestSpsConsole
{
class Program
{
static void Main(string[] args)
{
using(var siteCollection = new SPSite("http://em10"))
{
var web = siteCollection.OpenWeb();
var listCollection = web.Lists;
foreach(SPList list in listCollection)
{
Console.WriteLine(list.Title);
}
}
Console.ReadLine();
}
}
}
Zauważcie, że SPWeb już nie jest w using, przy dispose od SPSite, SPWeb zostanie usunięty (uwaga, linki prowadzą do dokumentacji z WSS 3.0) :)
Jak uruchomimy taki kod, dostaniemy następujący, mało mówiący wyjątek:
The Web application at http://em10 could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.
Spędziłem nad nim trochę czasu i już chciałem rezygnować, kiedy zobaczyłem iż target platform ustawiony domyślnie jest na x86:
Jak wiadomo, SharePoint 2010 występuje jedynie w wersji 64 bitowej. Więc miałem dwie możliwość, w ustawieniach projektu, zmienić target platform na 64 bitowy:
Co nie zmienia poprzedniego rysunku (tam wciąż jest wyświetlane x86, zaś kompilacja idzie na x64, co może być mylące… dość bardzo), lub mogłem stworzyć nowy target platform:
Po dodaniu i ustawieniu go na Any CPU kod działa już poprawnie.














