【发布时间】:2019-09-08 18:32:19
【问题描述】:
我正在尝试在解决方案中迁移各种 C# 库项目以使用新的 SDK (VS2017+) format。该解决方案还包含几个需要引用这些库的 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 项目都已修改为 SDK 项目,使用 <PackageReference/> 条目作为 NuGet 包引用,并且所有传递依赖项在它们之间流动,没有任何问题。
我遇到的问题是,当我构建 ASP.NET 应用程序时,MSBuild 正确地将项目 A 和项目 B 的程序集以及来自顶级和传递 NuGet 包引用的程序集复制到bin 文件夹,但它没有复制项目 A 和项目 B 都需要的传递项目 C 的输出。
除了将 ASP.NET 项目中的顶级项目引用添加到“缺失”项目之外,是否有直接的解决方法?
【问题讨论】:
标签: c# asp.net msbuild nuget csproj