在使用中的项目中缺少DLL自身的依赖性

问题描述 投票:0回答:2

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

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

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

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

作为临时解决方案,我可以在该项目中导入这两个缺少的参考,它会正常工作并按预期运行。但这不是我想要的(我想也不是一个干净的解决方案)。

我想知道为什么类库项目的依赖项未反映在生成的dll文件中?有什么办法可以解决这个问题?

非常感谢您的帮助。

c# .net dll dependencies nuget
2个回答
0
投票

请参见this,当两个项目都在同一台机器上时,不建议使用引用汇编的方式。

您正在使用文件引用(添加引用=>浏览...)。这就是为什么您必须在项目中手动导入这两个缺失的引用。

因此,我建议您添加项目引用,如果两个项目都在同一解决方案中,则可以right-click current project=>add reference=>project tab find that assembly you need。(而不是浏览...)

如果引用的项目不在同一解决方案中。在解决方案资源管理器中右键单击解决方案=>添加现有项目以将其导入。然后添加项目参考。


0
投票

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

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

如您所见,对于开发来说,这是缓慢而困难的,因为如果您的使用中的应用程序在包中发现了错误,或者您想同时在使用中的应用程序和类库中开发新功能, ,这意味着每次对类库进行代码更改时,都需要增加版本号,打包软件包,发布软件包,然后在使用项目中更新软件包版本。使用ProjectReference可以轻松,轻松地编辑代码,编译和运行。没什么可考虑的。

© www.soinside.com 2019 - 2024. All rights reserved.