2016-11-30 59 views
0

我有一個從文件夾插件加載DLL插件的應用程序(我們稱之爲A)。我創建了一個插件DLL(我們稱之爲B)。我的插件DLL是用C#編寫的,並且有像CEFSHARP DLL這樣的一些依賴項。如果我將所有CefSharp DLL所需的依賴關係複製到應用程序A文件夾,唯一的方法是應用程序A可以加載我的插件。我的問題是:部署具有依賴性的C#DLL庫

如何使安裝安裝文件,以便安裝必要的依賴關係到某種文件夾和應用程序A會知道這些是哪裏?插件B在安裝過程中不必轉移到Plugins文件夾。它甚至有可能嗎?

在此先感謝!

+0

你可以做很多與維克斯 – NtFreX

回答

1

如果應用程序實現好,它應該有一個app.config(這是在Visual Studio中的名稱)或myapp.exe.config(這是它被編譯後的名稱)的文件,搜索的插件文件夾依賴的DLL,就像

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="plugins" /> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

然後,您的插件將並行地擁有所有依賴項,並且不需要將它們放入應用程序的安裝目錄中。

  • 讓用戶選擇的應用程序A的安裝目錄(最好:

    隨着InnoSetup如下,你能做到這一點用一個Pascal腳本從註冊表自動檢測到它,比如,不要讓用戶選擇它)

  • 安裝依賴到所選的目錄
  • 安裝插件進入plugins子目錄

這裏是一個InnoSetup腳本的相關線路:

[Setup] 
DefaultDirName={pf}\App A 
[Files] 
Source: "./myplugin.dll"; DestDir: "{app}/plugins"; Flags: ignoreversion 
Source: "./dependency.dll"; DestDir: "{app}"; Flags: ignoreversion 
+0

我沒編譯或內置應用程序A是第三方應用程序提供了一個DLL文件,一個基類,它可以在我的插件B中擴展。我面臨的問題是,如果我將所有依賴關係置於Plugins文件夾中,它將無法工作,它將顯示缺少的依賴關係錯誤。 –

+0

然後聯繫供應商並告訴他他的插件概念不起作用。 –

+0

我會檢查這是一個主題的答案:))有沒有其他的黑客繞過它而不聯繫供應商?如果沒有,我會聯繫供應商並提交一個錯誤。謝謝! –