簡體   English   中英

如何引用 NuGet 包?

[英]How to reference NuGet packages?

我是 .NET 世界的新手,此時我對包、引用以及如何在我的 c# 項目中引用它們感到非常困惑。

我的解決方案中有 3 個項目:

  • DataAccess - 包含訪問數據的邏輯、DTO 和實體之間的映射等,
  • DataAccessTest - 包含DataAccess項目的單元測試,
  • Service - 將DataAccess項目包裝到 Windows 服務中。

現在, DataAccess項目引用 AutoMapper(以及其他)來幫助進行數據轉換。 它包含在csproj文件的<PackageReference />元素中。 當我在做dotnet restore時它似乎工作正常,但是當嘗試解析命名空間時dotnet build失敗! JetBrains Rider 也是如此——它不會找到命名空間,直到我在<Reference>明確引用它們!

不確定是否相關,但相關項目也是如此。 例如, DataAccessTest引用DataAccess項目 - 以便運行測試。 但是,它仍然需要在項目引用之上添加傳遞依賴項(例如 AutoMapper)。

這是預期的行為嗎? 您是否需要同時保留<PackageReference><Reference>才能正確編譯項目?

在 C# 中,您必須注意引用其他項目。 如果一個項目已被其他項目引用,則另一個項目不能使用或引用第一個項目。 如果你這樣做了,它會給你編譯錯誤。

您需要為每個引用該包中方法的項目安裝 Nuget 包。 因此,如果只有您的 DataAccess 項目需要 AutoMapper,那么將 Nuget 包添加到該項目就足夠了。 解決方案只不過是一堆項目的包裝器。 您應該能夠單獨發布項目。 該項目將處理它自己的依賴項。 很難找出錯誤的原因。 如果您創建一個小的測試項目,例如創建一個空的控制台項目和一個 DataAccess 庫,這可能會有所幫助。 然后將 Nuget 包添加到 DataAccess 庫並復制所有內容。 通過這種方式,您可以嘗試找出問題所在。 確保為正確的項目安裝 Nuget 包(在我發現它是如何工作之前,我多次出錯)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM