在C#中,引用一个库就会自动把一个dll Copy过来。
我想请问,如果我release出一个工程。但是我要保持我原有的dll目录结构,怎么办?比如 我的程序 test.exe 生成后 引用的 pub/a.dll pub/x/b.dll lib/c.dll
这样的结构保持下来。怎么办?

解决方案 »

  1.   

    恩 就这么说吧,一个工程有几个项目,其中一个exe,其余都是被它引用的dll.如果在release 后 出来的东西 是分目录级的 
    比如说 exe在文件夹的第一层, dll在后面几层都有 或者说有很多个目录。
    这样该是明白了吧?
      

  2.   

    在你不想改变dll位置的引用上,点右键菜单,选属性,将属性中的第三行Copy Local设置为false,我这里是英文版Visual Studio,如果是中文版对应的应该是“拷贝到本地”?反正你设置了之后就编译的时候就不会挪动你的dll文件了。
      

  3.   

    那样做过,的确没有Copy,但是运行的时候就找不到对应的dll.或者这样说,我想知道 引用一个dll的代码写在项目的哪?
      

  4.   

    在项目的工程文件,就是.csproj文件里面,是用相对路径记录dll位置的。设置为false后找不到,说明你在release的时候没有把相应的dll文件放到相应的位置。
      

  5.   

      这个问题你不用担心,请你看一下有关“程序配置文件”的相关内容,只在程序发布时才需要,在开发过程中不用管它,我只简单的说明一下:   在“控制面板”的“管理工具”里面有“.net framenetwork 配置工具”(安装的版本不同名字稍有差异),打开后在左边树形菜单选择应用程序,然后添加要配置的应用程序,选择你的.exe文件,添加完后在应用程序中就会显示你刚加入的程序,在上面按右键选择属性,在打开的对话框的下面有“添加程序集的相对路径”在那个文本框中 写入相对路径,即是相对于.exe文件的路径,这样在程序发布时就可以把其他的程序集放在你设定的相对路径下面了,.exe会正确找到其他附加程序集加载。
      

  6.   

    刚才有个地方忘说了,设置完后会在.exe所在的文件夹中自动生成一个配置文件,文件名类似这样
    .exe.config  ,这个文件在发布时一定不要忘记加入安装包