PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)簡介
當用.NET呼叫已有的COM元件的時候,一般需要使用tlbimp匯入COM元件的TypeLibrary資訊,生成對應的Interop Assembly。所謂PIA (Primary Interop Assembly),則是“官方”釋出的對於某個COM元件的.NET DLL。比如微軟公司釋出了Office 2003的COM元件,可以用於操作COM,同時,微軟也釋出了Office 2003所對應的PIA,用於.NET。PIA和普通的Interop(又稱為AIA, Alternative Interop Assembly)的不同之處在於:
1. PIA是官方釋出並經過Sign,可以在不同程式中共享。而AIA如果被不同的公司Sign過,則一個公司Sign的AIA DLL所建立的物件和另外一個公司Sign的AIA DLL是不相容的(不同的Key代表不同的Identity),這也是使用PIA的主要原因
2. PIA可能經過某種改動使其比一般Tlbimp生成的Interop DLL要容易使用一些,比如提供一些封裝函式。修改方法通常有兩種:
a. 可以從Tlbimp生成的DLL反彙編修改再生成新的DLL
b. 可以自己用C#來編寫這個DLL(其實Tlbimp和Tlbexp也是C#寫的)
3. 用Tlbimp生成PIA的時候需要指定/primary開關並宣告對應的key,如果不使用tlbimp生成PIA,則需要將對應的DLL加上PrimaryInteropAttribute和GuidAttribute,這也正是Tlbimp所作的。
4. 用RegAsm註冊PIA的時候,RegAsm會在COM元件的TypeLibrary註冊項中加入註冊資訊表明該PIA對應這個COM元件
5. 當用Visual Studio的Add Reference功能的時候,VS會自動去查詢是否有符合條件的PIA(通過上面所說的註冊資訊),如果存在,則直接使用這個DLL
Blog: http://blog.csdn.net/atfield
轉載請註明出處
相關文章
- Maven Assembly外掛介紹Maven
- COM Interop入門
- Apache Maven Assembly Plugin 的介紹ApacheMavenPlugin
- Solidity:assemblySolid
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介紹C#反射
- csharp excel interop programmingCSharpExcel
- 走近COM Interop——RCW入門
- 淺談 C# Assembly 與 IL (一):C# Assembly 與 ReflectionC#
- Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application()報錯ROSAPP
- sbt的assembly外掛
- [譯][A crash course in WebAssembly] assemblyWeb
- web assembly 初體驗Web
- C#反射的Assembly的簡單應用C#反射
- Dynamics CRM Plug-in assembly does not contain the required types or assembly content cannot be...AIUI
- plan9 assembly 入門
- Profiling an Assembly Program
- 008 Web Assembly之效能分析Web
- pwn.college Fundementals Assembly Crash Course
- 在 .NET Compact Framework 2.0 中使用 COM InteropFramework
- 004 Web Assembly康威遊戲之優化Web遊戲優化
- 006 Web Assembly之除錯方法Web除錯
- maven assembly plugin,maven dependency plugin的使用MavenPlugin
- Eclipse : Web Deployment Assembly & Maven dependencies issueEclipseWebMaven
- 利用Assembly動態載入程式集
- 004 Web Assembly康威遊戲之最佳化Web遊戲
- 003 Rust Assembly之實現康威生命遊戲Rust遊戲
- 007 Web Assembly康威遊戲新增互動Web遊戲
- 009 Web Assembly學習結束篇Web
- web assembly是什麼,能幹什麼Web
- C#操作Microsoft.Office.Interop.Word類庫完整例子C#ROS
- 推薦一個好工具:P/Invoke Interop Assistant【轉】
- 在c#如何:使用 COM Interop 建立 Excel 電子表格C#Excel
- 如何獲得COM的Interop互動庫C#原始碼C#原始碼
- 005 Web Assembly之測試康威遊戲程式碼Web遊戲
- Apache Maven Assembly自定義打包外掛的使用ApacheMaven
- 無法嵌入互操作型別“Microsoft.Office.Interop.Excel.ApplicationClass”型別ROSExcelAPP
- Xamarin.iOS專案編譯提示Could not AOT the assemblyiOS編譯
- 使用Maven的assembly外掛實現自定義打包Maven