温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c# - How to reference NuGet packages?
.net c# nuget package rider

c# - 如何引用NuGet软件包?

发布于 2020-04-13 13:44:25

我是.NET世界的新手,在这一点上,我对包,引用以及如何在c#项目中引用它们感到非常困惑。

我的解决方案中有3个项目:

  • DataAccess -包含用于访问数据的逻辑,DTO与实体之间的映射等,
  • DataAccessTest-包含DataAccess项目的单元测试
  • Service-将DataAccess项目包装到Windows服务中。

现在,DataAccess项目引用了AutoMapper(以及其他)来帮助进行数据转换。它包含在文件的<PackageReference />元素中csproj我在执行时似乎工作正常dotnet restore,但是dotnet build在尝试解析名称空间时失败!JetBrains Rider也是如此-在我明确引用它们之前,它不会找到名称空间<Reference>

不确定是否相关,但是相关项目也一样。例如,DataAccessTest引用DataAccess项目-以便运行测试。但是,它仍然需要在项目参考之上添加传递依赖(例如AutoMapper)。

这是预期的行为吗?您是否需要同时保留它们<PackageReference><Reference>项目以使其正确编译?

查看更多

提问者
mhaligowski
被浏览
233
RudolfJan 2020-02-11 01:28

您需要为每个引用该包中方法的项目安装Nuget包。因此,如果仅您的DataAccess项目需要AutoMapper,则将Nuget包添加到该项目就足够了。解决方案不过是围绕多个项目的包装。您应该能够单独发布项目。该项目将照顾自己的依赖性。很难找出问题所在。如果创建一个小的测试项目,例如创建一个空的控制台项目和一个DataAccess库,可能会有所帮助。然后,您将一个Nuget包添加到DataAccess库中,并复制所有内容。这样,您可以尝试找出问题所在。确保为正确的项目安装Nuget软件包(在发现它实际上是如何工作之前,我几次都错了)。