我试图在我的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>
我的解决方案中有一个名为&#34; lib&#34;的文件夹。对于文件夹中的所有文件,“复制本地”设置为true,但应用程序仍无法运行。 如何在不破坏应用程序的情况下保持Visual Studio解决方案的有序性?
答案 0 :(得分: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文件。
现在打开的visual studio有一个指向我的某个插件的Debug文件夹的路径。当我调试我的应用程序时,将找到,加载和调试正确的dll没有问题 - 我在Debug-&gt; Windows-&gt; Modules面板下验证了这一点。
这仅适用于Debug配置。如果我想运行发布配置,我将.bat文件更改为“Release”,关闭Visual Studio并重新运行.bat文件。
我将相同的模式应用于运行我的可执行文件。设置我希望我的dll来自哪里的环境,然后执行我的可执行文件:
SET PATH=$~dp0plugins\Debug;%PATH%
... Repeat for other dll locations
"%~dp0Debug\MY_EXECUTABLE.exe" %*
SS64是一个宝贵的资源,可以找出你在.bat文件中可以做些什么