• 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题!


    VS.NET的web解决方案中,一个解决方案里可能有很多工程,除了“表现层(UI层)工程以外”,其它工程都是dll工程。如果各个工程之间随便引用dll,经常会发生dll之间的引用冲突,导致工程无法编译。可以有2种解决方法:

    1.如果把所有的工程都放在一个大的解决方案里,那么就要设置工程的编译顺序。

            把只引用系统dll的工程最先编译,总有一些工程,只是引用System、System.Data、System.Xml等系统dll,这些工程就先编译。类推,引用到上面编译好的dll的工程后一步编译……直到最后一个工程。
            如何设置工程的编译顺序呢?在“解决方案“图标上点右键->“项目依赖项...”,在里面把各个项目的依赖项目设置好,在“项目生成顺序”里,项目的编译顺序就自动调整好了,这样编译的时候就不会出现dll冲突的问题了!
            这种方法的好处是,每次只要编译一遍,就能把所有的工程都编译好,保证从vss里签出的文件都能被编译。缺点是,要是编译很大的解决方案要n长时间!

    2.把各个工程单独编译,并把dll输出到同一个指定的目录下,所有的工程都引用改目录下的dll。

            如果你同时打开了2个以上的VS.NET并相互的工程,那么,有可能在编译时,系统会报错,说指定的dll正被占用。

    该种方式要做的事是:
            a.指定输出目录,在工程图标上点右键->“配置属性”里的“生成”、“输出”,设置好输出路径,再在“通用属性”里把“引用路径”里的错误dll引用路径删除。
            b.不把引用的dll拷贝到本地目录。把项目引用dll全选中,在属性里的“复制本地”设为false就可以了,不设的话有可能发生“变量已在多处重复定义”的错误。主要,对于UI层工程(就是能运行的工程),一定要把所有改工程引用到的dll都拷贝到其bin目录下,因为“能运行的工程”在运行时只会到bin目录下寻找dll,没有的话,就会报找不到dll的运行时错误!
            这种方法的好处是各个项目组只要编译自己的dll,然后提交给配置管理员,由配置管理员统一编译整个解决方案,速度比较快。缺点是,如果某个项目组只更新了源代码文件,没有提交编译好的dll,那么解决方案里引用的就不是最新的dll。

    以上2种方法可以解决dll之间引用冲突的问题!

  • 相关阅读:
    redis_String
    redis单线程架构
    redis数据结构与内部编码
    常用命令
    Tomcat:web服务器软件
    mysql数据库-备份与还原实操
    mysql数据库-备份方式简介与规范
    mysql数据库-日志管理
    mysql数据库-简介
    在 Kubernetes 集群在线部署 KubeSphere
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1718076.html
Copyright © 2020-2023  润新知