我使用Visual Studio製作C#程序。我有一個第三方的Dll,我正在加載。它可以工作,但我希望它位於編譯目錄的子目錄中。 (Release \ lib \而不是Release)。我可以使用exe.config文件來完成此操作,但我不希望用戶能夠更改程序查找Dll的位置。那麼,如何在不使用exe.config的情況下在子目錄中引用Dll?Visual Studio - 在編譯文件夾外加載參考文件
回答
我認爲您需要AppDomainSetup.PrivateBinPath屬性設置爲您的域。 在此屬性中指定文件夾路徑(如果多於一個用「;」分隔)您的引用程序集所在的位置。通過這種方式,您可以對程序集進行簽名,以查找指定的目錄以獲取所需的引用。
請注意,此屬性僅適用於子目錄o bin路徑的目錄,但看起來確實如此。
編輯
例子:
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path1;path2;...";
好運。
好吧,這似乎是我需要的,但我在哪裏放?對不起,我對這種東西不太好。在Main()函數頂部的Program.cs中,我將AppDomainSetup設置爲appdomainsetup = new AppDomainSetup(); \t \t \t appdomainsetup.PrivateBinPath =「\\ lib \\」;但我如何使用該變量? – Aidan 2012-02-20 19:27:13
@Aidan:結帳我編輯的評論 – Tigran 2012-02-20 19:39:01
這是行不通的:/。我嘗試打印出改變後改變的值,沒有任何結果。所以,這意味着它不會更新該變量。我認爲你需要做的是創建一個新的域並設置它。我想弄清楚現在怎麼做...... – Aidan 2012-02-20 19:46:50
在開始加載dll之前,指定PrivateBinPath很重要。
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path";
Application.Run(new Form1());
}
}
如果在應用程序文件夾一個dll需要在我們指定的文件夾PrivateBinPath另一個DLL,它不會工作。所有dll必須在同一個文件夾中...
- 1. 編譯* .lib文件visual studio
- 2. 文件/參考在Visual Studio 2010
- 3. 編譯C文件在Matlab與Visual Studio
- 4. Hadoop:外部jar文件夾參考
- 5. 從加載項添加文件和文件夾的項目在Visual Studio 2010
- 6. Visual Studio 2010:添加現有文件夾
- 7. Visual Studio 2015 -Release文件夾
- 8. Visual Studio文件夾結構
- 9. 創建文件 - 編譯並將參考放入系統文件夾
- 10. MVC Visual Studio在模型文件夾中添加.dbml文件
- 11. 自動添加要在Visual Studio中編譯的文件
- 12. Visual Studio在錯誤位置創建文件夾/文件夾
- 13. 將以前的文件夾添加到Visual Studio以外的SVN
- 14. Visual Studio 2010將.cpp文件編譯爲.c文件
- 15. Visual Studio 2012將.c文件編譯爲cpp文件
- 16. 包含現有的服務參考文件夾,以在Visual Studio 2010中投影
- 17. 如何從發佈文件夾設置visual studio 2008加載文件?
- 18. 在Visual Studio中顯示文件夾
- 19. 編譯文件夾和PIE.htc?
- 20. visual studio編譯時插件
- 21. Flash加載程序要求除主文件夾所在文件夾以外的文件夾文件?
- 22. 從public_html文件夾內編輯public_html文件夾外的文件
- 23. 圖片不是從參考文件夾(藍色文件夾)
- 24. 用戶的AppData文件夾中的ReflectedSchemas文件夾(Visual Studio)
- 25. 將Visual Studio資源文件放置在「資源」以外的文件夾中?
- 26. visual studio,用參數編譯
- 27. 已編譯TypeScript的輸出文件夾
- 28. 構建參考文件
- 29. 編譯C++從源C++文件在Windows在Visual Studio
- 30. 在編譯時驗證HLSL文件在Visual Studio中
將其複製到文件夾中。刪除當前引用,然後轉到參考 - >添加並導航到.dll位於的位置..這是一個問題..當你部署應用程序..你打算在目標計算機上創建一個文件夾,基於你將它放在本地..還是你要設置copy local = true ..?你有沒有想過使用GAC,如果你正在移植到目標機器? – MethodMan 2012-02-20 19:08:47
我已經嘗試過......它將其複製到輸出目錄,或者,如果我將其關閉,則會在運行時發出錯誤。在目標機器上,它將具有帶有exe的bin文件夾,然後是帶有dll的lib文件夾。還有一些其他的東西,但現在並不重要。另外,我看過其他人發表的帖子,其中有人說你可以使用GAC,但這是一個非常糟糕的主意......所以如果沒有這個可能,那會更好。 – Aidan 2012-02-20 19:15:32