首页 新闻 赞助 找找看

Asp.Net Core 2.1 项目 程序集引用的坑

0
悬赏园豆:50 [已解决问题] 解决于 2018-11-28 11:05

有一个公共的a.dll做一些公共的封装,比如日志,缓存,数据库操作等等。
a.dll引用了log4net.dll这个动态库

这个时候Asp.Net Core 2.1 项目引用程序集a.dll,调用a里面封装的日志操作方法。
编译正常,运行报错 提示找不到log4net.dll这个动态库
把log4net.dll拷贝到运行目录,运行还是一样报错

这个时候主项目直接引用log4net.dll,编译,运行正常

这里有个疑问,a.dll这个封装的公共库,在使用的时候项目还得把a.dll引用的其他动态库都给引用一遍,这感觉很坑啊,引用的都是主项目不直接使用的,这样不是主项目太多太多引用了,为什么不能就直接引用a.dll,其他的动态库考过去呢?

村委第一书记的主页 村委第一书记 | 初学一级 | 园豆:26
提问于:2018-11-22 18:26
< >
分享
最佳答案
0

网上的解决方案都是要求要么项目引用,要么打包成nuget包
这两种方案试过能解决运行报错问题。
但是都有不方便的地方
项目引用,要把项目解决方案源码丢给每个使用者
nuget包,公司内部公共库不方便都上传到nuget平台。
公司内部自建nuget服务器,但有时候项目组工作环境不固定,比如出差等等,不一定都能访问到内网的私有库。

如果一定要使用程序集引用方式。试了很多次之后发现如下方案:
公共程序集A(比如A引用了B、C、D、E、F等等程序集)。
主项目ASP.NET Core 程序要引用程序集A,通过A使用内部封装的各种方法。
项目公共的程序集文件夹Parkage里面要把A,和A引用的B、C、D、E、F等等程序集全部考进去。
这个时候主程序只需要引用A一个,其他的不需要引用。编译,运行正常
这里虽然主程序不需要一个个的引用第三方的各个程序集,但要把他们放到和引用的A在同一个目录

程序集引用方面.net core这块没有.net framework来的方便,官方也提倡使用nuget包分发。应该是内部运行机制改变了。

村委第一书记 | 初学一级 |园豆:26 | 2018-11-23 10:55
其他回答(3)
1

要么直接引用项目a,要么项目a发布nuget包给其他项目引用

收获园豆:30
dudu | 园豆:31075 (高人七级) | 2018-11-22 19:21
0

core里面基本都用Nuget的包了,你可以直接引用包,应该就可以了

收获园豆:10
rqx | 园豆:468 (菜鸟二级) | 2018-11-22 22:47
0

发布nuget包,内网自己搭一个完事。

收获园豆:10
czd890 | 园豆:14292 (专家六级) | 2018-11-22 23:42

或者可以使用myget的私有包

支持(0) 反对(0) czd890 | 园豆:14292 (专家六级) | 2018-11-22 23:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册