【问题标题】:Multi-project setup with Nuget Packages使用 Nuget 包进行多项目设置
【发布时间】:2018-06-27 15:08:30
【问题描述】:

我有一个包含两个子项目的 Visual Studio 解决方案,这些子项目使用相同的 nuget 包。我有多年的 C++ 项目经验,但我对 .net 世界和 nuget 包还是比较陌生。我正在尝试同时实现以下目标。

  1. 将我的主解决方案文件放在项目根文件夹中(参见下面的目录结构)
  2. 将每个子项目(包括 .csproj 文件)包含在各自的子文件夹中
  3. 只有一个位置包含所有包的列表。我不喜欢在每个子文件夹中都有相同的 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


【解决方案1】:

使用 Nuget 包设置多项目

恐怕您必须在每个子文件夹中复制相同的 packages.config 文件,因为 NuGet 团队已弃用 NuGet 3.0 中的解决方案级包

https://github.com/NuGet/Home/issues/522

Visual Studio 2017 的默认 nuget 版本为 4.0 及以上。

所以,Master.sln 文件级别不能只有一个 packages.config。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多