【发布时间】:2018-06-27 15:08:30
【问题描述】:
我有一个包含两个子项目的 Visual Studio 解决方案,这些子项目使用相同的 nuget 包。我有多年的 C++ 项目经验,但我对 .net 世界和 nuget 包还是比较陌生。我正在尝试同时实现以下目标。
- 将我的主解决方案文件放在项目根文件夹中(参见下面的目录结构)
- 将每个子项目(包括 .csproj 文件)包含在各自的子文件夹中
- 只有一个位置包含所有包的列表。我不喜欢在每个子文件夹中都有相同的 packages.config 文件的副本。只想说 Master.sln 文件级别的一个,因为所有项目都使用相同的包,我想确保它们使用相同包的相同版本。
- 我还注意到 .csproj 文件最终包含 packages.config 文件中的内容的副本。有没有办法让包裹清单只在一个地方没有副本?仅在 packages.config 文件中而不在 .csproj 文件中?
这是我的项目目录结构
{projects root}
Master.sln
packages.config {is it possible for this file to be at this level}
Proj1
Proj1.sln {do not want solution at this level}
Proj1.csproj
Program.cs
packages.config {do not want at this level}
Proj2
Proj2.sln {do not want solution at this level}
Proj2.csproj
Program.cs
packages.config {do not want at this level}
目前,如果我在 VisualStudio 中编译 Proj1.sln 或 Proj2.sln 文件,则会创建“packages”文件夹并正确编译项目。但是,如果我打开 Master.sln(其中包含两个子项目)并编译,那么“packages”文件夹会创建在与 Master.sln 文件相同的级别,但项目不会构建,我假设因为他们找不到包裹。
对此的任何帮助将不胜感激。
【问题讨论】:
-
“我想确保他们使用相同版本的相同包”这就是包资源管理器中
Consolidate选项卡的用途。
标签: c# visual-studio-2017 nuget projects-and-solutions solution