组织依赖关系

时间:2013-11-14 22:15:03

标签: visual-studio visual-studio-2013

我试图在我的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解决方案的有序性?

1 个答案:

答案 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文件中可以做些什么