这是一个创建于 1978 天前的主题,其中的信息可能已经有所发展或是发生改变。
在开发 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
 |
|
2
v2byy 2018-01-02 17:48:52 +08:00
@ mayowwwww realease 给别人用,直接 GAC 貌似不太好吧,GAC 也要每次都注册一遍啊,也就相当于还是要打包一些 dll
|
 |
|
3
whywhy36 2018-01-03 04:42:43 +08:00
2. 不同版本的 dll 的引用问题,例如:不同的 project 中使用的不同版本的 dll
花点功夫统一版本
|
 |
|
4
v2byy 2018-01-03 12:51:51 +08:00 via iPhone
大家是直接使用 nuget 来管理还是直接引用啊?
|