2013-11-14 91 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文件

做什么