需求:

有A.exe和B.exe, 都引用了 C.dll, output路径都是 W:\Debug.
A和B都添加了对C的引用,正常情况下C会被复制到 output 里面。
C这样子的dll很多,不想把它们和exe放在同一级的目录,移动到子目录,如W:\Debug\3rdDll

办法:

1. 首先设置C.dll

打开Project A的References,选中C.dll, 右键Properties,Copy Local 设为False,这个dll就不会拷贝了。

2. 设置PostBuild,

打开B的Build Events,  PostBuild 输入

mkdir  $(OutputPath)\3rdDll
move $(OutputPath)\c.dll  $(OutputPath)\3rdDll\c.dll

A和B可以互换。

3. A和B 加入Config文件,

Config:  Build Action=None, Copy to Output Directory=Do not copy

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="3rdDll;"/>
    </assemblyBinding>
  </runtime>
</configuration>

或者 app.xaml.cs里面加入:

public App()
       {
           this.Startup += new StartupEventHandler(App_Startup);
       }

void App_Startup(object sender, StartupEventArgs e)
       {
           var name = Assembly.GetExecutingAssembly().Location;
           var path = Path.GetDirectoryName(name);
           AppDomain.CurrentDomain.AppendPrivatePath(path+ @"\3rdDll");
       }

AppDomain.CurrentDomain.AppendPrivatePath 貌似过时了,AppDomainSetup 的使用方法没找到。

注意:3rdDll这个文件夹必须在 W:\Debug 的子目录或者更深一级的目录。

特殊需求:

F.dll 不在 W:\Debug 的子目录或者更深一级的目录,例如上一级目录;

或者exe的目录级别比dll的低一些,

用这个办法:

public App()
       {
           AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
       }

System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
       {
           var name = Assembly.GetExecutingAssembly().Location;
           var path = Path.GetDirectoryName(Path.GetDirectoryName(name));
           var dllPath = path + @"\3rdDll\F.dll";
           return Assembly.LoadFrom(dllPath);
       }

Over!

WPF: 把引用的dll移动到自定义路径的更多相关文章

  1. WPF - 如何引用external dll中图片

    前几天一直想引用别的DLL里面的一个图片.总是出现各种各样问题,一气之下将图片拷贝到当前Project中,运行良好.虽然知道引用图片,就1.2.列出来的2点就够了. 1. The Build Acti ...

  2. WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...

  3. 《Programming WPF》翻译 第9章 3.自定义功能

    原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框 ...

  4. WPF界面设计技巧(4)—自定义列表项样式

    原文:WPF界面设计技巧(4)-自定义列表项样式 有前面修改按钮样式的基础,我们可以尝试来定制一个即好看又好用的 ListBox ,今天先来讲“好看”部分. 打开 Microsoft Visual S ...

  5. WPF界面设计技巧(2)—自定义漂亮的按钮样式

    原文:WPF界面设计技巧(2)-自定义漂亮的按钮样式 上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来,此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Des ...

  6. ASP.NET真分页_接前篇引用AspNetPager.dll进行数据分页

    一.前端准备工作 1.之前我写到过<Asp.net中引用AspNetPager.dll进行数据分页>  这种分页方式只能在前台将数据分页,而每次点击查询时对目标数据库还是全查询,这样不仅会 ...

  7. ocx文件转换成C#程序引用的DLL

    将ocx文件转换成C#程序引用的DLL文件的办法  将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下  1.打开VS2008或VS2010命令提示符(此例用VS2008) 将o ...

  8. C# 动态修改dll的签名 以及修改引用该dll文件的签名

    在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...

  9. 未能找到元数据文件“引用的DLL的路径”

    使用VS的时候   偶尔会出现错误 [未能找到元数据文件“引用的DLL的路径”] 但是实际上项目中这些DLL都是做了引用的,甚至你前一天打开还是好好的,睡一觉起来 不知道什么原因 就酱紫了 原因:不详 ...

随机推荐

  1. angular学习笔记(二十四)-$http(2)-设置http请求头

    1. angular默认的请求头: 其中,Accept 和 X-Requested-With是$http自带的默认配置 Accept:application/json,text/plain       ...

  2. mproxy: c 语言实现的一个最小的http代理,支持FQ

    https://github.com/examplecode/mproxy mproxy 使用说明 这是一个微型的http代理服务器实现,使用c语言实现,核心代码量不足500行,不依赖任何第三方的库( ...

  3. 安装Tomcat配置环境变量

    我是从官网下载的zip,没有用installer. 从目前的情况来看,只要你配置好了JAVA_HOME, CLASSPATH, PATH,那么剩下的,目前看来,就只要配置好CATALINA_HOME即 ...

  4. dp之区间:最大k乘积

    题目:给你一个n(1<=n<=15)位数,求将它分成m段,用m-1个*连接起来的最大乘积....... 思路:定义dp[i][j]为将前i位数分成j段的最大乘积,那么dp[i][j]==m ...

  5. style弹出带滚动条的虚拟窗口

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. 【C#】允许泛型方法<T>返回空值Null

    在设计一个返回类型为T的泛型方法时,有时希望能返回空Null,然后会报错: 根据提示,将返回值由Null改为default(T)即可. default(T)表示返回当前T类型的默认值,如果T为int则 ...

  7. (转)Linux下PS命令详解

    (转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进 ...

  8. javascript商务通

    //左侧就医服务新 document.write("<style type='text/css'>"); document.write(".left_swt{ ...

  9. [转]解决eclipse无法设置NDK问题

    参考:http://jingyan.baidu.com/album/4d58d5413000a09dd4e9c0fe.html?picindex=1  到android sdk官网下载r23版本的ad ...

  10. awk多列匹配

    1.1.1 awk多列匹配 [hadoop@st1 data]$ netstat -an|awk  '$1~/tcp/&&$3~/64/{print $0}' tcp        0 ...