我一直在試圖讓免註冊的基於.NET的COM DLL工作,但沒有成功。配置基於.NET的組件免註冊激活
- 在Visual Studio 2008中,我添加了一個新的C#類庫。
- 我啓用了'make assembly COM-visible'和'register for COM interop'選項。
- 我添加了一些公共接口和類的一些功能。
- 我增加了一個明顯的相關性,以我的C++客戶端應用程序:的#pragma評論(連接「/ manifestdependency ...
但是,當我開始我的應用程序獲得「應用程序未能啓動,因爲應用程序配置不正確「
我已經使用微軟的mt工具來提取C++客戶端應用程序和C#COM DLL的清單文件,並且兩者中的信息都是相同的(C++清單文件中的dependentAssembly包含與COM清單文件中的assemblyIdentity相同的名稱和版本)
我也嘗試過在http://msdn.microsoft.com/en-us/library/eew13bza.aspx上描述的方法,但結果相似。
同樣,我試圖在我的C++客戶端應用程序的「框架和參考」中添加對我的COM項目的引用。該屬性頁面上的信息看起來很有前途(它顯示了'copy local','copy dependencies'等選項以及'assemblyIdentity'等屬性),但Visual Studio既不會複製DLL也不會自動向清單文件添加依賴項。
請注意,'註冊的變體'工作正常。
任何人有任何想法我做錯了什麼?
更新:
- 當我創建一個簡單的C++ DLL和嵌入清單具有相同的名字和我的.NET COM DLL(相同assemblyIdentity)的版本,我的應用程序啓動時的罰款。所以問題在於我的.NET COM DLL的清單文件。
- 我可以用
mt -managedassemblyname:...
成功從DLL中提取清單,然後嵌入與mt -outputresource:...
相同的清單,但這也不會導致Windows成功解析依賴關係。
偉大的解決方案!這大大簡化了安裝過程。非常感謝! – 2010-01-20 10:54:34
嗨,我有一個C++程序集,它執行一個Managed COM Assembly的共同創建,我需要類似的機制。我想繞過現有的.Net實現,並希望它調用到我的新實現中。 C++程序集依次通過.Net exe加載。那麼,應該如何爲C++端設計清單? – 2013-03-04 16:21:37