[.NET] 組件安裝與配置 / Assembly Install and Configuration
来源:互联网 发布:两性心理学 知乎 编辑:程序博客网 时间:2024/06/14 07:00
1.組件(Assembly),是一種可移動的執行檔,副檔名為exe或dll。
2.組件分為私有組件與共享組件
2-1.私有組件:
2-1-1.不具有強式名稱(Strong Name)
2-1-2.只能擺在與應用程式同一層的目錄底下。
2-2.共享組件:
2-2-1.具強式名稱(Strong Name)
2-2-2.可放在本機或遠端電腦(網際網路),或GAC資料夾(C:\WINDOWS\assembly)。
3.GAC全名是Global Assembly Cache,全域組件快取。
4.利用應用程式組態檔配置,當引用的組件若版本更新(或是要應用指定程式要執行的組件版本),我們可以不需再重新編譯程式(Compiler)。(Note:但必須要組件遵守參數傳遞原則,否則程式還是一樣會出錯)。請參考[C#.NET][VB.NET] 何謂 應用程式 組態設定 Application Configurable
如何建立私有組件
1.建立一個新的Windows Form 應用程式→建立一個專案(CS_PrivateAssembly)→再加入一個類別庫專案(myClassLibrary)→撰寫類別庫內容。
2.將myClassLibrary加入參考
3.開始撰寫Windows Form 應用程式,完成後建置方案
private void Form1_Load(object sender, EventArgs e)
{
//引用類別
myClassLibrary.myClass myc = new myClassLibrary.myClass();
label1.Text= myc.myVersion();
}
4.建置方案,便會在 ".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\” 產生以下內容。
產生的內容如下
5.在".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\”資料夾中將CS_PrivateAssembly.exe與myClassLibrary.dll複製到5-1~5-4的資料夾;並依以下四種測試方式,得知兩者的關係。
5-1.在同一目錄下,驗証程式是否可正確執行。
5-2.刪除myClassLibrary.dll,驗証程式是否可正確執行。
5-3.建立子目錄(bin)後將myClassLibrary.dll移至子目錄(bin),驗証程式是否可正確執行。
5-4.依下列敘述設定,建立子目錄(bin)後將myClassLibrary.dll移至子目錄(bin),驗証程式是否可正確執行。
以下為執行失敗的畫面
6.當你上述步驟5-3測試完畢之後,應該是會出現錯誤訊息,下列說明如何設定組態檔;專案按右鍵→加入→新增項目→建立應用程式組態檔→輸入以下內容→建置方案。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin"/>
</assemblyBinding>
</runtime>
</configuration>
privatePath屬性,可以指定多個資料夾,用分號區隔開,但資料夾位置只能在應用程式的子路徑下。相關組態設定請參考.NET Framework 的組態檔結構描述
例:<probing privatePath="bin;bin2\subbin;bin3"/>
如何建立全域組件
1.建立一個新的Windows Form 應用程式→建立一個專案(CS_PrivateAssembly)→再加入一個類別庫專案(myClassLibrary)→撰寫類別庫內容。
2.開啟類別庫專案(myClassLibrary)屬性→簽署→新增強式名稱。
新增key
輸入名稱
完成後會多一把鑰匙
3.將myClassLibrary加入參考
4.開始撰寫Windows Form 應用程式,完成後建置方案
5.建置方案後,便會在".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\”產生以下內容。
6.將CS_PrivateAssembly.exe與myClassLibrary.dll複製到6-1~6-6資料夾,並以下幾種測試方式,得知兩者的關係。
6-1.在同一目錄下,驗証程式是否可正確執行。
6-2.刪除myClassLibrary.dll,驗証程式是否可正確執行。
6-3.建立子目錄(bin)後將myClassLibrary.dll移至子目錄(bin),驗証程式是否可正確執行。
6-4.用拖曳方式將myClassLibrary.dll移至目錄(C:\WINDOWS\assembly)底下,並刪除6-4資料夾的myClassLibrary.dll,驗証程式是否可正確執行。(完成後再將C:\WINDOWS\assembly底下的myClassLibrary刪除)
6-5.將myClassLibrary.dll版本內容修改(或修改組件資訊),驗証程式是否可正確執行。(參考如何使用Microsoft .NET Framework 2.0組態工具)
6-6.將myClassLibrary.dll移至任何目錄,例如(C:\Test,或是網路位置),驗証程式是否可正確執行。(參考如何使用Microsoft .NET Framework 2.0組態工具)
如何使用 Microsoft .NET Framework 2.0 組態 工具
1.控制台→系統管理工具→Microsoft .NET Framework 2.0 組態 工具 (若在無該工具請詳閱手動安裝.NET 2.0組態設定工具)
2.應用程式→加入要設定的應用程式→其它→加入應用組程式。
3.在左邊視窗,已設定的組件→在右邊的視窗,按右鍵→加入→選擇myClassLibrary.dll組件。
4.這時".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\”目錄底下已經自動產生了CS_PublicAssembly.exe.config檔案,可以將它加入專案以便管理。
如何使用不同版本的組件
1.myClassLibrary專案屬性→應用程式→組件資訊→更改版本資訊,由1.0.0.0改為1.0.0.1→建置方案。
2.此步驟將要執行6-5測試,先建立6-5資料夾,將6-4資料夾的CS_PublicAssembly.exe複製至6-5,再將myClassLibrary.dll (版本1.0.0.1)複製至6-5驗証程式是否會執行。如果你會成功表示你設錯了
3.執行Microsoft .NET Framework 2.0 組態(左邊視窗)→應用程式→CS_PublicAssembly→已設定的組件→檢視已設定的清單→設定CS_PublicAssembly的繫結原則→依開發者的版本修改下圖內容→將".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\”資料夾中的CS_PublicAssembly.exe.config,複製至6-5驗証程式是否會執行。如果你會失敗表示你設錯了
如何變更組件位置
1.執行Microsoft .NET Framework 2.0 組態→修改底層機碼→修改內容如下↓
2.執行Microsoft .NET Framework 2.0 組態→修改底層機碼→修改內容如下→將 ".\CS_AssemblyInstall\CS_PrivateAssembly\CS_PrivateAssembly\bin\Debug\bin\”資料夾中的CS_PublicAssembly.exe.config與6-5的CS_PublicAssembly.exe複製至6-6,然後將myClassLibrary.dll複製至C:\test\底下然後驗証程式是否會執行。如果你會失敗表示你設錯了
範例下載:
VB_AssemblyInstall.rar
CS_AssemblyInstall.rar
如何設定開發階段共享組件
在開發階段我們可以使用DEVPATH來取代GAC
1.在應用程式的組態檔,將developmentMode設為true
<?xml version="1.0"?>
<configuration>
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
</configuration>
2.設定Windows環境變數DEVPATH,輸入輸出組件路徑即可。
若有謬誤,煩請告知,新手發帖請多包涵
- [.NET] 組件安裝與配置 / Assembly Install and Configuration
- 組件安裝與配置 / Assembly Install and Configuration
- mainlman install and configuration
- Apache Ant Install and Configuration
- .NET Assembly - Strong Names and Signing
- Build and Deploy a .NET COM Assembly
- Oracle Net Configuration Assistant配置
- Net项目部署与Assembly配置
- spring.net config/file/assembly 配置说明
- Netapp fundamental trainning 笔记1 install and configuration
- ubuntu 14.04 server install and configuration rabbitmq cluster
- .NET Assembly
- Oracle Net Configuration Assistant配置学习
- Oracle Net Configuration Assistant配置学习
- Oracle Net Configuration Assistant 配置步骤
- Arch Install & some configuration
- Typical Install Configuration
- 在.Net framework中动态加载Assembly的loadFromRemoteSources配置
- php读取文件
- js 日期判断,如2日期之前至少4周,最多5周
- u-boot1.1.6在s3c2440上移植
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev() .
- HDOJ 1878 - 欧拉回路 判断无向图是否是欧拉图...
- [.NET] 組件安裝與配置 / Assembly Install and Configuration
- springmvc扫描不到controller
- 在ATL中接收事件(AtlAdvise 和 AtlUnadvise的使用)
- MST最小生成树及克鲁斯卡尔(Kruskal)算法
- [LeetCode] Unique Binary Search Trees
- BeautifulSoup 中文文档
- CBP详解
- 用NMAKE创建VS2012 C++工程一 HelloWorld
- Erlang list的++操作和append函数的底层实现