zoukankan      html  css  js  c++  java
  • 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题!

    (使用反射将业务对象绑定到 ASP.NET 窗体控件)http://www.microsoft.com/china/msdn/library/webservices/asp.net/aspformbinding.mspx?mfr=true

    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之间引用冲突的问题!

    antony
    :antony1029@163.com
    :http://antony1029.cnblogs.com
  • 相关阅读:
    20、职责链模式
    19、命令模式
    18、桥接模式
    17、单例模式
    javascript移动端实现企业图谱总结
    前端用js模拟疫情扩散开发总结
    移动端企业图谱开发兼容性等问题踩坑
    js实现企业图谱(pc端企业图谱项目总结与踩坑分享)
    基于vue脚手架的项目打包上线(发布)方法和误区
    实现一个网页版的聊天室(类似于钉钉群)
  • 原文地址:https://www.cnblogs.com/antony1029/p/785082.html
Copyright © 2011-2022 走看看