c# - 使用项目中缺少 DLL 自身的依赖项

标签 c# .net dll dependencies nuget

我使用 C# 和 .Net 创建了一个类库项目。

在这个项目中,我使用了两个外部依赖项(更具体地说:Microsoft.Win32.Registry(4.6.0) 和 System.Data.SqlClient(4.7.0) Nuget 包)。

构建此项目后,我可以在/bin/debug 文件夹下看到生成的 DLL 文件。

现在我想在另一个项目中导入这个生成的 DLL 并使用它的方法。导入并运行该项目后,它提示无法找到我在类库项目中拥有的两个外部依赖项。

作为临时修复,我可以在该项目中导入这两个缺失的引用,它将正常工作并按预期工作。但这不是我想要的(我想这也不是一个干净的解决方案)。

我想知道为什么类库项目的依赖关系没有反射(reflect)在生成的dll文件中?有什么办法可以解决这个问题吗?

非常感谢您的帮助。

最佳答案

如果您的类库与使用它的应用程序位于同一解决方案或源代码控制存储库中,则应使用 project-to-project reference ,而不是直接引用程序集。正如文档所说,通过这种方式,它会在您编译应用程序时自动检测类库的更改,但文档没有说依赖项也会流动。

否则,正如 Lance Li 所写,您应该从类库创建一个 NuGet 包。不幸的是,开始时存在一些障碍。 Creating the package很简单,但是您需要将 nupkg 文件发布到某个地方。对于早期开发(在包准备好共享之前),最简单的选择是使用 local file feed 。然后,您需要在应用程序中使用 nuget.config 来使用该包将该本地源添加为源,然后您就可以 install the package在你的消费项目中,这会带来依赖。

正如您所看到的,对于开发来说,这是缓慢而困难的,因为如果您的消费应用程序在包中发现了错误,或者您尝试同时在消费应用程序和类库中开发新功能这意味着每次对类库进行代码更改时,都需要增加版本号、打包包、发布包,然后在使用项目中更新包版本。使用 ProjectReference 要容易得多,它可以让您简单地编辑代码、编译、运行。没有什么可考虑的。

关于c# - 使用项目中缺少 DLL 自身的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58624315/

相关文章:

c# - 在 C# 中格式化 SQL 友好的日期/时间

c# - 如何使用 C# 为 OpenSTV 选举生成 .BLT 文件?

c# - 数据表和 LINQ 父/子关系

python - 避免将 DLL 放入 CWD

c++ - FreeLibrary 后堆损坏?

c# - 如何避免无法访问代码的警告

c# - 有任何 ORM 可以为高速批量插入提供不错的方法吗?

c# - 加载程序集并更改源代码,这可能吗?如何做?

mysql - 如何在不将 csv 保存到磁盘的情况下将 csv 格式的数据从内存发送到数据库?

delphi - DLL 注入(inject)和访问冲突