2013-11-14 125 views
0

我試圖在我的Visual Studio解決方案中組織我的非託管.dll依賴項,但除非這些DLL散佈在我的解決方案的頂層,否則它們不會構建到應用程序的目錄中,然後應用程序無法運行。我已經做了很多谷歌搜索關於這個問題的,有似乎是一個app.config設置形式的解決方案:組織依賴關係

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatepath="lib" /> 
    </assemblybinding> 
    </runtime> 
</configuration> 

我叫我的解決方案文件夾「LIB」,並複製本地設置對於文件夾中的所有文件爲true,但應用程序仍然無法運行。 如何保持我的Visual Studio解決方案不會中斷我的應用程序?

回答

0

我發現解決此問題的唯一方法是通過windows.bat文件。 如果有方法將額外的搜索路徑編碼到非託管可執行文件中,我想知道!

這裏是我做的一個例子:

SET PATH=$~dp0plugins\MY_PLUGIN\Debug;%PATH% 
vcvars32.bat 
devenv build\MY_PROJECT.sln 

第一行增加了,我想Visual Studio來找到我的DLL的路徑

第二行確保「權'視覺工作室將開放。 IE:如果我的環境設置爲VS2010,我不希望VS2012默認打開。

最後一行調用IDE來打開我的sln文件。

現在打開的視覺工作室有一個指向我的插件之一的Debug文件夾的路徑。當我調試我的應用程序時,正確的DLL將被發現,加載和調試,沒有問題 - 我在Debug-> Windows-> Modules面板下驗證。

這隻適用於Debug配置。如果我想運行發佈配置,我將.bat文件更改爲「發佈」,關閉Visual Studio並重新運行.bat文件。

我應用這種模式來運行我的可執行文件。設置的,我想我的DLL的來自於環境,然後執行我的可執行文件:

SET PATH=$~dp0plugins\Debug;%PATH% 
... Repeat for other dll locations 
"%~dp0Debug\MY_EXECUTABLE.exe" %* 

SS64是一種寶貴的資源,找出你可以在.bat文件

做什麼