我试图在Visual解决方案中组织我的非托管.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“的文件夹,对于文件夹中的所有文件,Copy设置为true,但应用程序仍然无法运行。如何在不破坏应用程序的情况下组织Visual解决方案?
发布于 2013-11-14 23:32:04
我发现解决这个问题的唯一方法是通过windows .bat文件。如果有办法将额外的搜索路径编码到非托管可执行文件中,我想知道!
以下是我所做工作的一个例子:
SET PATH=$~dp0plugins\MY_PLUGIN\Debug;%PATH%
vcvars32.bat
devenv build\MY_PROJECT.sln第一行添加了我希望在哪里找到dll的路径。
第二行确保“右”视频工作室将打开。如果我的环境设置为VS2010,我不希望默认情况下打开VS2012。
最后一行调用IDE来打开我的sln文件。
现在打开的visual有一个路径,可以找到我的一个插件的Debug文件夹。调试应用程序时,将找到、加载和调试正确的dll,没有问题--我在Debug->Windows->Modules面板下验证了这一点。
这只适用于调试配置。如果我想运行发行版配置,我将.bat文件更改为“release”,关闭Visual并重新运行.bat文件。
我在运行可执行文件时应用了相同的模式。设置我希望dll来自的环境,然后执行我的可执行文件:
SET PATH=$~dp0plugins\Debug;%PATH%
... Repeat for other dll locations
"%~dp0Debug\MY_EXECUTABLE.exe" %*SS64是一种宝贵的资源,可以用来计算在.bat文件中可以做什么。
https://stackoverflow.com/questions/19989555
复制相似问题