WSS 3.0【開發誌】01 初體驗:以Console顯示網址與應用程式集區

WSS 3.0【開發誌】01 初體驗:以Console顯示網址與應用程式集區

這陣子在找WSS Search客製化的方法,看了SDK、看了網路上相關的文章、看了MSDN的範例,也看了不少MVP的文章,瞪著SDK幾天,照個MSDN範例做了一個MOSS KeywordQuery Search,ㄜ…做出來了,可是甚麼都不了解…外加,沒寫過.NET、沒寫過ASP.NET,真是七暈八素…只好,認命了,還是先從最基本的開始吧…就是這樣… Orz

想進行SharePoint的開發(這邊收斂在WSS 3.0好了),您必須準備…

1. WSS 3.0環境

要開發當然要有環當然得先安裝WSS 3.0的環境,至於怎麼安裝,可以參考 (連結) ,這邊就不再多說了

2. Visual Studio開發工具

clip_image002

要進行開發,當然要有開發工具,如果您不是專業的軟體人員,或者您是學生,可能比較難擁有專業的Visual Studio 2005開發工具吧!對於好學的您,微軟很貼心的幫您準備了Visual Studio Express版本,而這邊所使用的是C#,所以請下載 Visual C# 2005 Express Edition 吧!當然在這裡面還有很多其他Express版本可供下載,歡迎使用!

OH…上面的連結是網路安裝版,如果要下載完整檔案,請 (點此)

3. WSS 3.0 SDK

可協助您引用WSS 3.0開發的…everything…內也有範例,點此 (下載)

4. 面對開發與天書的勇氣

如果您有開發經驗,不論.NET、ASP.NET,那真是恭喜您了;沒有的話,就陪小弟一起摸索未知的開發領域與天書吧…

在本篇您可以學到:

1. 認識Visual C# 2005開發環境

2. 使用Visual C# 2005 Express進行WSS 3.0開發

3. 使用Console來開發並顯示WSS網站與網站應用程式名稱

4. 如何引用Microsoft.SharePoint命名空間

5. 瞭解遠端SharePoint開發的限制

如果您已經下載好Visual C# 2005 Express Edition,安裝完成後,就可以開始使用了,當然,這邊不會講這個軟體的安裝囉,還有,安裝完成後,記得要註冊ㄟ…喔,是免費註冊的…

clip_image004

打開Visual C# 2005 Express Edition後,如下圖所看到的,是整個Visual C#開發的環境,小弟是在Vista Ultimate 64 bit上面安裝此軟體並進行開發的…

clip_image006

好啦,簡單的開發測試開始嚕…

1. 在【File】點選【新增專案】

clip_image008

2. 新增專案對話框,選擇【Console Application】,【名稱】就保留原來的名稱吧,點選【確定】。

clip_image010

3. 專案新增完畢後,在右邊的【方案管理】可以看到【方案名稱】與【專案名稱】,專案名稱下有多個檔案…

clip_image012

4. 在這邊小弟想將【組件名稱】與【預設命名空間】即所謂的namespace改成較容易與較有意義的名稱,所以在專案名稱【ConsoleApplication1】右鍵,選擇【屬性】。

clip_image014

5. 將【組件名稱】與【預設命名空間】都改成PrintSiteOnConsole

clip_image016

6. 重點來了:改了namespace後,要記得到【Program.cs】檔將namespace改成變更後的命名空間名稱。

clip_image018

7. 前面,都只是為了這個專案所做的一些設定,接下來,真的要進入WSS 3.0開發囉;要進行WSS 3.0開發,得先引用SharePoint所提供的Microsoft.SharePoint.dll物件,這樣才能使用Microsoft.SharePoint namespace,而引用的目的是: 藉此使用SharePoint頂層網站、子網站或清單的型態與成員… 。在【References】右鍵,點選【加入參考】。

clip_image020

8. 在Add Reference對話框,切換到【瀏覽】頁簽;由於小弟的WSS網站在虛擬機器上,所以在檔案名稱輸入機器名稱與C磁碟,如果您的開發環境與SharePoint環境在同一台機器上,請直接看下一步驟。

clip_image022

9. 找到【Microsoft.SharePoint.dll】選取後按下確定即可;而Microsoft.SharePoint.dll預設存放的完整路徑是:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI,在此路徑下您將可找到此dll。

clip_image024

10. 加入完成後,您可以在References下看到Microsoft.SharePoint。

clip_image026

11. 打開Program.cs檔案,在using System.Text; 下,鍵入【using Microsoft.SharePoint】,這樣,在程式碼中進行開發時,就可直接使用SharePoint的類型或成員了。

clip_image028

12. 接著在static void Main(string[] args)加入下列程式碼,在這邊不解釋所使用的程式碼內容,留著以後再解釋吧,不過可以看到SPSite這個Class,就是透過Microsoft.SharePoint namespace所引用出來的,如果在第11步驟沒有加上using Microsoft.SharePoint,則程式會發生錯誤。

SPSite rootCollection = new SPSite("http://wsscht");

Console.WriteLine(

"網址為 {0} 的網站使用 {1} 網站應用程式集區", rootCollection.Url, rootCollection.WebApplication.Name);

Console.ReadLine();

clip_image030

13. 新增完畢後,點選【開始偵錯】。

clip_image032

14. 耶,偵錯發生錯誤…囧了…到底哪邊發生錯誤…程式很明白的告知SPSite rootCollection = new SPSite(" http://wsscht "); 有錯誤,想說難道連不進去嗎?測試一下網站,可以連阿!

clip_image034

15. 點選【檢視詳細資料】看看有沒甚麼端倪…

clip_image036

16. 詳細資料…有看沒有懂…

clip_image038

17. 先【停止偵錯】…

clip_image040

18. 先把專案儲存起來再說吧,在【儲存專案】對話框中,將【名稱】做個比要有意義的命名,【方案名稱】也是一樣,並保留核取【為方案建立目錄】,按下【儲存】後,再來除錯吧…

clip_image042

19. 根據上面的錯誤訊息,只好順著錯誤的關鍵字【{"'Microsoft.SharePoint.CoreResource' 的型別初始設定式發生例外狀況。"}】去找Google吧…這麼常一大串當然找不到,最後以Microsoft.SharePoint.CoreResource關鍵字在MSDN論壇上找到 Can't connect to existing site 這篇發問,MVP Ishai Sagi提到在他的Blog有一篇 Content Query limitations, and Object module access rights requirements 有談論到如果要進行開發,這個使用者必須擁有幾種角色與權限:

  • The user is a server farm administrator.
  • The user has permissions to access the content database.
  • The user is a site collection administrator.
  • The user has permissions to access the Windows SharePoint Services site or the SharePoint Server 2007 site through which the code iterates.

另外在官方的KB: Error message when you try to iterate through Windows SharePoint Services site objects or SharePoint Server 2007 site objects by using the SharePoint object model: "Unhandled Exception: System.IO.FileNotFoundException",有完整的描述…

而最後有一篇回覆:

The only way to "remotely connect" is by using the SharePoint Web Services.

Any and all object model code must run on the same physical and logical machine as SharePoint itself.

好吧,那只好在WSS虛擬機器上面測試了…

20. 最後,在WSS虛擬機器上安裝Visual C#,並測試,成功了… XDDD

clip_image044

以上,胡亂做了一個簡單的SharePoint開發測試…希望給大家在SharePoint開發上有一點點的認識與幫助…

也請對於.NET開發或SharePoint開發的前輩,如發現本文有錯誤的觀念、不恰當的描述或不適當的做法,煩請賜教與更正,拜託了…

接下來的開發,得回到WSS虛擬機器上面做了,不能用Vista進行遠端開發了,除非用Web Services…

後來,小弟又用WinForm做了同樣功能的測試,將結果回傳到TextBox & Label中…沒辦法,對.NET一點都不熟,只好認命一點測試,結果…為了把結果傳到這兩個物件顯示出來,又摸了好久… Orz…