Létrehozási, fordítási és hibakeresési problémák VS 2008 SharePointos projekteknél

Hosszú listát lehet összeírni arról, hogy a SharePoint mi mindenben egyedi. Íme egy újabb tétel a listába: a Visual Studio 2008-ban található SharePointos projekt sablon létrehozás után nem fordul, még ha nem is írunk bele semmit, vagy éppen debug módban nem indítható el.

Először is tisztázzuk, mitől lesznek SharePointos projekt sablonok a Visual Studio 2008-ban: a telepítéskor ki kell választanunk, hogy Office alkalmazásokat is szeretnénk fejleszteni. Ennek hatására két SharePointos projekt típus jelenik meg: SharePoint 2007 Sequential Workflow és SharePoint 2007 State Machine Workflow:

SharePointos projekt típusok Visual Studio 2008-ban

Előfordulhat, hogy hiába kattintunk bármelyikre, a Studio nem képes létrehozni a projektet:

Could not load file or assembly ‘Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. The system cannot find the file specified.

Ezek után még felkínálja a Studio, hogy adminként indítsuk újra, de ettől ne várjunk csodát, ugyanis a hibaüzenetnek nagyon egyszerű oka van: valószínűleg nem telepítettünk a gépünkre SharePointot. Egy újabb ok arra, hogy a SharePointos fejlesztéseinket Windows Serverre telepített SharePoint és helyi Visual Studio környezetben végezzük.

Amikor a projekt típusok közül bármelyiket létrehozzuk és le akarjuk fordítani, az alábbi hibaüzenetekket kapjuk:

Could not resolve this reference. Could not locate the assembly "Microsoft.Office.Workflow.Tasks". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

The type or namespace name ‘Office’ does not exist in the namespace ‘Microsoft’ (are you missing an assembly reference?)

Ha jobban megnézzük a Solution Explorer ablakban a References ágat, azt vehetjük észre, hogy négy SharePointos szerelvényre van hivatkozás, melyek közül a Microsoft.Office.Workflow.Tasks nem található:

Solution Explorer: References

Ennek valószínűleg az az oka, hogy WSS-sel dolgozunk, ezt a szerelvényt viszont csak a MOSS tartalmazza. A hibaüzenet megszűntethető, ha eltávolítjuk ezt a szerelvény referenciát. A hivatkozás egyedül azért szerepel itt, mert a Workflow1.cs fájlban megtalálható az alábbi using sor, amit szintén törölhetünk:

using Microsoft.Office.Workflow.Utility;

A projektünk ezek után vígan fordulni fog. Amikor azonban az F5-re bökve debug módban indítanánk, jön egy újabb hibaüzenet, ezúttal nem fordítási, hanem deployment error:

Failed to install the workflow template to Microsoft Office SharePoint Server.

Feature ’86d1ee3b-9966-40a0-a16f-c366e8a5f302′ could not be installed because the loading of event receiver assembly "Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" failed: System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. The system cannot find the file specified.
File name: ‘Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’

Ennek az oka, hogy a feature.xml-ben található hivatkozás a Microsoft.Office.Workflow.Feature szerelvényre, amely szintén csak a MOSS-ban található meg. Bátran töröljük a ReceiverAssembly és a ReceiverClass sorokat és máris menni fog a telepítés:

    <?xml version="1.0" encoding="utf-8" ?>
    <Feature  Id="86d1ee3b-9966-40a0-a16f-c366e8a5f302"
                Title="SharePointWorkflow1 feature"
                Description="My SharePoint Workflow Feature"
                Version="12.0.0.0"
                Scope="Site"
                ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
                ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"
                xmlns="http://schemas.microsoft.com/sharepoint/">
        <!-- ... -->

A Visual Studio 2008 egyik újdonsága, hogy egy projekt létrehozásakor megadhatjuk a cél .NET Framework verziószámot. A szóban forgó projektek azonban csak akkor jelennek meg, ha a létrehozáskor 3.5-t választunk. Mivel tudjuk, hogy a SharePointnak a .NET 3.0 is elég, ezért a projekt létrehozása után a projekt tulajdonságai között bátran állítsuk át a Target Framework opciót .NET Framework 3.0-ra.

Ezek után megint fordítási hibákat fogunk kapni, aminek megoldásához töröljük a LINQ-es hivatkozásokat. A References ágból töröljük a System.Data.DataSetExtensions és a System.Xml.Linq szerelvényeket, a workflow1.cs fájlból pedig a using System.Linq; sort.

 

3 thoughts on “Létrehozási, fordítási és hibakeresési problémák VS 2008 SharePointos projekteknél

  1. Krisztián

    Szia Gyuri!
     

    Nekem a VS2008-al folyton "Activity xxx validation failed can not find the condition yyy" hibát dobott az egyik Sharepoint-os Workflow projektben…. A megoldás itt található. Röviden és tömören, használjunk inkább kód szintű feltétel kiértékelést🙂
     
    Üdv:
    MK

  2. István

    Szia Gyuri!Rá lehet venni a VS2008-at, hogy XP-n MOSS telepítése nélkül is lehessen fejleszteni SharePoint-ra(pl.:web part)? A Visual Studio 2008 SharePoint Extension még telepíthető, de a referencia (Microsoft.Sharepoint) már felkiáltójeles.István

  3. György

    Szia István!Nem csak a Microsoft.SharePoint referenciával lesz gondod, több fájl is hiányozni fog, hiszen a Microsoft.SharePoint is hivatkozik további fájlokra. Ráadásul még ha a referenciákat sikerül is feloldanod, akkor is maximum odáig tudsz eljutni, hogy lefordul a kódod, aztán viheted át egy szerverre, hogy kipróbáld. Nem véletlenül javasolja a Microsoft is, hogy inkább telepítsd magadnak szervert VPC-be és arra vegyél VS-t. Legalábbis még ezt javasolja, aztán majd változik a helyzet, ha jön a SharePoint 2010, de erről még nem szabad beszélni…

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s