WPF: 把引用的dll移动到自定义路径

摘要:
CopytoOutputDirectory=Donotcopy<配置>装配。v1“>或添加;}voidApp_Startup(objectsender;AppDomain.CurrentDomain.AppendPrivatePath(路径+@“3rdDll”)到app.xaml.cs;

需求:

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

办法:

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)3rdDllc.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 + @"3rdDllF.dll";
           return Assembly.LoadFrom(dllPath);
       }

Over!

免责声明:文章转载自《WPF: 把引用的dll移动到自定义路径》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JQuery EasyUI datagrid 批量编辑和提交win7 安装.Net framework 4.0出现 安装不成功,错误代码0x80240037 的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

homestead 入坑安装

1、在使用 Homestead 之前,需要先安装 Virtual Box、VMWare、Parallels 或 Hyper-V (四选一,我们通常选择 VirtualBox,因为只有它是免费的)以及 Vagrant,所有这些软件包都为常用操作系统提供了一个便于使用的可视化安装器,通过安装界面引导就可以完成安装 2、安装vagrant box  //自动下...

Win10+YOLOv3完整安装过程(亲测可运行)

最近了解并尝试在Win10安装YOLOv3,参考了十几篇文章,发现每个人都有自己的安装方式,最初尝试用cmake编译,虽然安装完成,但无法使用GPU,坑非常多,经2天努力终于安装成功,分享并记录自己的安装过程,供大家参考。 系统:Win10 显卡:GeForce RTX2070 with Max-Q Design 其它:CUDA10.2,cuDNN7.6....

svn 本地仓库使用

下载TortoiseSVN官网地址:http://tortoisesvn.net/downloads.html当前版本为1.7.7 下载:TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi 下载完成后安装 此时我们就可以在右键菜单中看到如图所示菜单选项了。 创建档案仓库 创建档案仓库,即是创建存储档案的地方,Torto...

win10 mars xlog编译

win10 mars xlog编译    一. 环境准备 安装 cmake 以及 python2.7, 以及下载 ndk-r16b,并配置环境变量 NDK_ROOT 指向 ndk 路径。 如果是 Windows 系统还需要安装 cygwin,并务必要安装其中的 make, gcc gdb。 然后把 cygwin 的 bin 目录配置到环境变量中的 PA...

Hadoop Eclipse 插件制作以及安装

在本地使用Eclipse调试MapReduce程序,需要Hadoop插件,笔摘记录下制作安装过程。 准备工作(hadoop-2.6.0为例):   搭建好Hadoop环境   下载Hadoop安装包,解压到某个路径(D:hadoop-2.6.0)   下载 hadoop2x-eclipse-plugin包   安装jdk 、ant、eclipse 相关资源...

由mv命令引发的对inode的思考

一场机器迁移引起的思考 最近团队一台机器老化了,准备做全量迁移,一不小心,就把100多个G的/data目录放到了新机器的/data/data目录下,上愁了,怎么削减一层data目录呢?难倒像Windows一样剪切过来吗?可是有100多个G啊?!抱着试试的心态,运行mv命令,没想到系统瞬间就完成了。为什么Linux可以这么快速剪切呢?这一切都要从Linux对...