我在一个c# 类库中调用了一个托管c++dll,这个dll又引用了很多c++ dll,但是这个dl必须存放在bin下面,太杂乱。不知道如何可以将他们单独放在一个文件夹里被引用。求大神指教
------解决思路----------------------
非托管dll可以放在system32 programfiles 程序目录 或者环境变量指定的地方
托管dll可以在app.config中配置搜索路径
------解决思路----------------------
如何在项目中引用exe路径以外的dll
1. 主工程添加控件工程,copy local设置为false
(这个意思是控件工程生成的dll不会copy到主工程下,即不会build一份和exe放在一块。)
2. 在主工程里添加一个app.config。配置如下:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--<probing privatePath="bin;bin2/subbin;bin3"/>-->
<dependentAssembly>
<assemblyIdentity name="MyCheckBoxCtrl"/>
<codeBase href="ExtDlls/MyCheckBoxCtrl.dll" mce_href="ExtDlls/MyCheckBoxCtrl.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
注意:如果是强名称的dll,可以是放在任意位置。没有强名称的dll只能放在exe目录下面的某个子目录。
比如:exe是在bin/debug,那么可以放在 bin/debug/bin2 或者其他的别的名字的目录里。