簡體   English   中英

Visual Studio項目將依賴項從引用的項目復制到輸出中

[英]Visual Studio projects copy dependencies from referenced project into output

是否可以使Visual Studio將引用項目的所有依賴項復制到輸出路徑中?

在解決方案中,項目A(庫,.NET標准)定義了一些功能,並且依賴於庫L1(通過NuGet)和庫L2(本地.dll ,已引用並復制到項目中)

項目B(控制台應用程序)引用項目A。

構建B時,輸出文件夾包含B和A.dll所有直接依賴項。 L1和L2在輸出中不可用。 因此,該程序無法正常運行。

如何強制VS將L1和L2也復制到B的輸出?

到目前為止,我發現的唯一方法是將A打包為NuGet,但這似乎是不必要的開銷,並且不舒服。 我想我只是忘記了其他人似乎都知道的東西。

編輯(清除示例)

我的解決方案包括兩個項目。

項目MongoWrapper

  • .NET Standard 2.0類庫
  • 取決於NuGet MongoDB.Driver軟件包
  • 實際使用此依賴項(無僵屍依賴項)

項目控制台用戶

  • .Net Framework 4.6.1控制台應用程序
  • 參考MongoWrapper項目
  • 實際使用MongoWrapper

意見

在調試ConsoleUser應用程序時,它將編譯並啟動。 在運行時,當它在MongoWrapper調用使用MongoDB.Driver的方法時,應用程序崩潰,因為未將MongoDB.Driver依賴項復制到ConsoleUser的輸出文件夾中。

如何解決這個問題?

通過使用.Net標准庫和.Net Framework應用程序引入了此問題。

TLDR

使用文本編輯器打開.Net Framework項目的.csproj文件。 在第一個PropertyGroup添加該行

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

保存文件,在Visual Studio中重新打開解決方案並執行“清理和構建”

不同項目文件版本中的依賴關系

.Net Framework項目使用.csproj項目文件的舊版本。 引用/依賴關系存儲在附加的packages.config文件中。 默認情況下,構建.Net Framework項目會使系統在引用的項目中搜索packages.config文件。 如果找不到此類文件,則生成任務會將引用的項目視為沒有依賴項。 因此,在示例中,未添加MongoDB.Driver庫。

通過在.csproj項目文件中添加建議的行,生成任務將搜索引用項目的項目文件以查找依賴關系,並將它們存儲在.Net Standard項目文件中。

默認情況下,.Net Core項目搜索較新的項目文件結構。

可以在選項-> NuGet->常規->程序包管理中設置新項目的默認行為。

是否可以使Visual Studio將引用項目的所有依賴項復制到輸出路徑中?

是。

這就是發布應用程序的工作-它為部署做好准備。 發布時,它將包括應用程序在輸出中運行所需的所有依賴項。

使用發布工具部署到本地文件夾。 可用的確切選項取決於您的應用程序類型。 在解決方案資源管理器中,右鍵單擊您的項目,然后選擇“發布”,然后選擇“文件夾”。 有關更多信息,請參見部署到本地文件夾

在此處輸入圖片說明

教程: 使用Visual Studio 2017發布Hello World應用程序

另請參見: .NET Core應用程序部署

暫無
暫無

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

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