从.NET Core 2.0控制台应用调用.NET Standard 2.0类库时遇SendGrid DLL加载错误
解决.NET Core 2.0控制台引用.NET Standard 2.0类库时找不到SendGrid程序集的问题
这种情况我之前处理过好几次,问题根源其实很明确——你直接引用类库DLL的方式,没办法自动传递类库的NuGet依赖。当你手动添加DLL引用时,控制台项目不会自动获取类库依赖的SendGrid包,所以运行时就会出现找不到程序集的错误。
给你几个可行的解决办法:
换成项目引用(最推荐)
别再直接加DLL了,在控制台项目的「依赖项」上右键,选择「添加项目引用」,然后选中你的.NET Standard 2.0类库项目。这样NuGet会自动把类库的所有依赖(包括指定版本的SendGrid)同步到控制台项目里,编译和运行时就能正常找到需要的程序集了。手动给控制台项目安装对应版本的SendGrid NuGet包
如果你暂时不想调整引用方式,可以打开控制台项目的NuGet包管理器,搜索并安装和类库中版本一致的SendGrid包(也就是Version=9.8.0.0这个版本)。安装完成后,控制台项目里就有了SendGrid的程序集,运行时就不会再报找不到文件的错误。检查类库输出目录的依赖文件
确认你的类库编译后,SendGrid的DLL是否和类库DLL在同一个输出目录下。如果不在,你需要手动把SendGrid的DLL复制到控制台项目的输出目录里,但这种方法比较繁琐,后续更新依赖时容易出问题,不太推荐。
另外提醒一句:.NET Core生态里,项目引用和NuGet包管理是更规范的依赖管理方式,直接引用DLL很容易出现这类依赖缺失的问题,尤其是跨项目协作的时候。
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

