2012-08-15 33 views
1

有沒有什麼辦法可以在Visual Studio的設計時加載非託管dll?在設計器中加載非託管DLL以加載包裹控件

我知道我總是可以將DLL放在「System32」文件夾中或將Dll路徑添加到「PATH」變量以直接加載它。但我不想這樣做。我想從應用程序的ExecutablePath中加載它。 DLL實際上擁有一個控件。

任何人都可以幫助我解決這個問題嗎?


感謝, WritZ

+0

您可能需要從可執行文件路徑中調用它,然後自己構建設計器。 VS設計人員只需創建一個.designer.cs文件,您也可以手動編寫該文件。 – HenryZhang 2012-08-15 17:22:03

+0

我想使用VS的設計師!這就是爲什麼我問是否有其他方法來完成這一點!或者我只是使用了「空白應用程序」模板而不是「Windows窗體項目」!如果我嘗試編輯'* .designer.cs'文件,那麼我認爲vs會覆蓋它,因爲我以前遇到過這樣的問題! – Writwick 2012-08-15 17:25:31

+0

我並不是要覆蓋* .designer.cs文件,而是設計器文件只是創建一個部分類文件,您可以將它放在另一個文件中。在運行時調用非託管代碼,這就是設計師無法看到/使用它的原因,因爲它無法在VS設計器中生成。這就是爲什麼DLL可以在不重新編譯應用程序的情況下被換出的原因。 – HenryZhang 2012-08-15 17:29:57

回答

0

我想從不能工作的應用

的ExecutablePath加載它,沒有一個呢。除了Windows以外,從源代碼管理簽入或清理項目時,設計師都會失敗。

此代碼在Visual Studio的上下文中運行,因此Windows DLL搜索規則基於其安裝位置。不清楚這是否是失敗的代碼或者程序集是否對DLL有隱式依賴關係。你可以做一些關於pinvoke的事情,你可以通過測試DesignMode屬性來防止代碼運行。處理隱式依賴的唯一方法是幫助Windows找到DLL。搜索路徑中的目錄。那麼唯一的方法就是將代碼拆分成只在設計模式下才真正重要的部分,以便DesignMode再次變得有用。

相關問題