[英]Transitive SDK project references in ASP.NET projects
我正在嘗試在解決方案中遷移各種 C# 庫項目以使用新的SDK (VS2017+) 格式。 該解決方案還包含幾個需要引用這些庫的 ASP.NET 項目。
我知道此時我無法更新 ASP.NET 項目以使用新的基於 SDK 的構建系統,但我已將它們修改為使用<PackageReference/>
條目而不是頂部的packages.config
文件級 NuGet 引用。
解決方案中有多個依賴場景,類似如下:
ASP.NET Project
--> Top.Level.Package (NuGet)
--> Project A (csproj)
--> Some.Package (NuGet)
--> Project C (csproj)
--> Some.Other.Package (NuGet)
--> Project B (csproj)
--> Project C (csproj)
--> Some.Other.Package (NuGet)
即一個 ASP.NET 項目引用一個頂級 NuGet 包,項目 A 和項目 B; 項目 A 引用了 NuGet 包和項目 C; 項目B引用項目C; 項目 C 引用了一個 NuGet 包。 所有非 ASP.NET 項目都已修改為使用 NuGet 包引用的<PackageReference/>
條目的 SDK 項目,並且所有傳遞依賴項在它們之間流動都沒有任何問題。
我遇到的問題是,當我構建 ASP.NET 應用程序時,MSBuild 正確地將項目 A 和項目 B 的程序集以及來自頂級和可傳遞 NuGet 包引用的程序集復制到bin
文件夾中,但它不會復制項目 A 和項目 B 都需要的可傳遞項目 C 的輸出。
除了將 ASP.NET 項目中的頂級項目引用添加到“缺失”項目之外,是否有一種直接的方法可以解決這個問題?
這是因為 ASP.NET 項目不(目前不能)支持 SDK 樣式的項目類型。
SDK 風格的項目主動查詢項目引用以獲得進一步的依賴關系。 由於 ASP.NET 項目不這樣做,您必須自己添加引用。 (或者自己添加所需的 MSBuild 邏輯,如該文件所示- 搜索IncludeTransitiveProjectReferences
,但我不能真正推薦這種方法,因為它可能與 VS 更新沖突)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.