我正在尝试将解决方案中的各种C#库项目迁移到使用新的SDK (VS2017+)格式。该解决方案还包含一些需要引用这些库的ASP.NET项目。
我知道目前无法更新ASP.NET项目以使用基于新SDK的构建系统,但我已将它们修改为使用<PackageReference/>
条目而不是顶层NuGet引用的packages.config
文件。
该解决方案中存在许多类似于以下依赖关系方案:
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包、Project A和Project B;Project A引用了一个NuGet包和Project C;Project B引用了Project C;而Project C引用了一个NuGet包。所有非ASP.NET项目都已修改为使用
<PackageReference/>
条目的SDK项目进行NuGet包引用,并且所有传递依赖项之间都流动得很好。我遇到的问题是,当我构建ASP.NET应用程序时,MSBuild会正确地将Project A和Project B的程序集以及顶级和传递的NuGet包引用的程序集复制到
bin
文件夹中,但它不会复制传递的Project C的输出,这对Project A和Project B都是必需的。除了在ASP.NET项目中添加顶级项目引用以解决“缺失”的项目外,还有没有简单直接的方法可以解决这个问题?
.props
文件的元(SDK)项目,该文件导入解决方案中的所有其他SDK项目,然后在我的ASP.NET项目文件中引用相同的.props
文件。需要引用相同项目集的SDK项目只需向元项目添加顶级引用即可。这有点笨拙,但足以胜任工作。 - Graham Watts