V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2byy
V2EX  ›  程序员

vs c#开发 dll 管理问题求教

  •  
  •   v2byy · 2018-01-02 16:43:39 +08:00 · 2186 次点击
    这是一个创建于 2510 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在开发 c#程序中,reference 一个 dll 的时候,一般通过 nuget 来管理,但是这样一来有一个问题,就是 reference 的 dll 都统一放在 app 根目录下,默认 dll 引用进来 copy to local 为 true
    这样有两个问题:
    1. 如果引用的 dll 多的话,第三方的 dll 太多,不好管理
    2. 不同版本的 dll 的引用问题,例如:不同的 project 中使用的不同版本的 dll

    晚上找了些资料,解决办法:
    在 app 的配置文件中使用 probing,在 app 的根目录下统一将 dll 放在一个文件夹如 lib 内,然后在 probing 中指明 privatePath,然后设置 reference 的 dll 的 copy to local 为 false

    还有什么更好的办法吗?
    第 1 条附言  ·  2018-01-11 14:51:06 +08:00
    找到了一个相对来说方便一点的方案,分享一下:

    1. 使用 nuget 来管理 dll,默认添加的 dll 是 copy to local 为 true,会自动复制到根目录
    2. 使用 probing 的方式,告诉.net framework 可以到 lib 目录下找 dll
    3. 在 project 的 post build event 中写几行批处理,实现自动将 dll 移动到 lib 目录

    eg:
    if not exist "$(TargetDir)lib" mkdir "$(TargetDir)lib"
    move /y "$(TargetDir)*.dll" "$(TargetDir)lib"
    4 条回复    2018-01-03 12:51:51 +08:00
    mayowwwww
        1
    mayowwwww  
       2018-01-02 17:27:58 +08:00
    GAC ?
    v2byy
        2
    v2byy  
    OP
       2018-01-02 17:48:52 +08:00
    @mayowwwww realease 给别人用,直接 GAC 貌似不太好吧,GAC 也要每次都注册一遍啊,也就相当于还是要打包一些 dll
    whywhy36
        3
    whywhy36  
       2018-01-03 04:42:43 +08:00
    2. 不同版本的 dll 的引用问题,例如:不同的 project 中使用的不同版本的 dll

    花点功夫统一版本
    v2byy
        4
    v2byy  
    OP
       2018-01-03 12:51:51 +08:00 via iPhone
    大家是直接使用 nuget 来管理还是直接引用啊?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.