首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Visual Studio 2008 擴展性開發(五):操作方案、專案與專案項目

     編輯:關於.NET

前幾篇較偏理論,從本文開始介紹 Add-In 中對 VS 核心元素的實際操作,精彩度大增。日常開發從開啟方案開始,再找專案、開檔案編碼。本文即圍繞此流程展開。

方案、專案與項目在 AOM 中的表達

這三者對 .NET 開發者再熟悉不過,但 AOM 表達方式與直覺不同。關鍵對應:

  • Solution 介面 → 方案
  • Project 介面 → 方案資料夾 與 專案
  • ProjectItem 介面 → 資料夾 與 檔案

實戰範例:NPetshop 解決方案產生器

實際開發常依特定架構(如 iBATIS.NET 的 NPetshop),包含多專案、組件、配置檔組織。專案啟動時搭建框架耗時,透過 Add-In 可做到「一次編寫,多次使用」。以 NPetshop 結構為例:

NPetshop 程式結構

建立流程:

解決方案建立流程

0. 重構命令新增程式碼

提取通用方法(GetCulturedMenuName、GetCommandFullName、GetCommandBarByName、AddNamedCommand2),簡化後續命令註冊。

1. 建立方案

使用者輸入方案名稱與目錄(專案名以此為前綴),透簡單表單收集:

產生器視窗

Solution3 關鍵方法:Create()、AddSolutionFolder()、AddFromTemplate()、SaveAs() 等。建立空方案:

Solution3 sln = (DTEObject.Solution as Solution3);
sln.Create(currentSlnPath, slnName);

呼叫 Create 後 VS 會自動開啟新方案。

2. 建立方案資料夾與複製組件

先複製所需組件至新方案目錄,再建立方案資料夾並加入檔案:

Project sfProj = sln.AddSolutionFolder(ExternalBinDirectoryName);
foreach (string file in Directory.GetFiles(ExternalBinPath))
  sfProj.ProjectItems.AddFromFile(file);

方案資料夾視為一種 Project,透過 ProjectItems 加入檔案。

3. 依相依關係建立各專案

順序:Domain → Persistence → Service → Presentation → Web。Project 關鍵成員:ProjectItems、Kind、References。

建立 Domain(類別庫專案):

string classLibProjTemplatePath = sln.GetProjectTemplate("ClassLibrary.zip", "CSharp");
string domainProjName = slnName + "." + "Domain";
sln.AddFromTemplate(classLibProjTemplatePath, Path.Combine(currentSlnPath, domainProjName), domainProjName, false);
Project domainProj = GetProjectByName(sln, domainProjName);
VSProject vsDomainProj = domainProj.Object as VSProject;
vsDomainProj.References.Add(Path.Combine(ExternalBinPath, "IBatisNet.Common.dll"));

AddFromTemplate 對 C#/VB.NET 回傳 null,需自行用 GetProjectByName 查找。加入組件參考用 VSProject.References.Add。

Persistence 同理,但加入專案參考用 References.AddProject(domainProj)。Service、Presentation 類同。Web 專案用 WebApplicationProject.zip 模板。

4. 建立資料夾與檔案

ProjectItem 統一表達資料夾與檔案。關鍵方法:AddFolder、AddFromFileCopy、AddFromTemplate。

webProj.ProjectItems.AddFolder("Maps", Constants.vsProjectItemKindPhysicalFolder);
webProj.ProjectItems.AddFromFileCopy(Path.Combine(GetAddinPath(), @"ibatis-config\dao.config"));

string templatePath = sln.GetProjectItemTemplate("Interface.zip", "CSharp");
webProj.ProjectItems.AddFromTemplate(templatePath, "MyInterface.cs");

至此完成具備初步功能的代碼產生器。

本篇小結

方案、專案、檔案(夾)是 VS 基本組織形式,本文介紹自上而下建立它們的操作,並以 NPetshop 產生器示範。注意:本文未涉及方案總管操作與檔案內容操作,將在後續文章介紹。

出處:原文連結

程式碼下載:範例程式碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved