VS2012 将工程编译为Release,引用dll找不到的问题

VS2012 将工程编译为Release,引用dll找不到的问题

前言: 我们再vs中编写的项目,经常需要将项目编译为Release版本拷贝给他人使用,但是,我们引用的很多dll文件别人的电脑上有时候并没有,此时我们需要将工程中引用的dll一并打包编译至Release中,那么如何将本机引用的dll一并打包呢?有以下三种方式

解决方案一、在引用中右击dll选择属性,将【复制本地】属性选为true。此时编译Release将会把该dll自动放在Release文件下。
VS2012 将工程编译为Release,引用dll找不到的问题_第1张图片

解决方案二、 先编译Release,再将所有用的dll全部拷贝至Release文件夹下,其实本质和第一种解决方案一样

解决方案三、 以上两种方式都是将dll直接放到Release文件夹下,因为程序再运行的时候,需要某dll时,会先到Release文件夹下找该dll,如果找不到就会去系统下找该dll,如果都找不到,则报错!因此我们可用上面两种解决方案解决。但是,如果我们引用的dlld过多,或者有各种类型的dll,那么全部放在Release文件夹下不仅看上去比较乱,而且分类不清晰,因此,我们可以想办法在编译的时候,在Release文件夹下建立各个类型的子文件夹用以放置dll。但是,因为程序默认仅仅到Release文件夹这一级目录下寻找dll,故这样做也会导致程序无法运行。对此解决方案如下:

1、首先在工程中添加文件夹,我此处添加libs文件夹,然后将各个类别的dll放到添加的子文件夹下,如下图
VS2012 将工程编译为Release,引用dll找不到的问题_第2张图片
2、选择我们文件夹中的dll,右键属性,将【复制到输出目录】设置为如果较新则复制

VS2012 将工程编译为Release,引用dll找不到的问题_第3张图片

3、打开App.config 添加runtime节点,如下




  
    
    
      
    
  
  
     
        
    

4、至此,再编译的程序将会自动将我们的dll文件夹结构复制到Release文件中,并且能找到该dll
VS2012 将工程编译为Release,引用dll找不到的问题_第4张图片

你可能感兴趣的:(开发工具)