使用Nuget包进行多项目设置

时间:2018-06-27 15:08:30

标签: c# visual-studio-2017 nuget projects-and-solutions solution

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

  1. 将我的Master解决方案文件放在项目的根文件夹中(请参见下面的目录结构)
  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}

目前,如果我在Visual Studio中编译Proj1.sln或Proj2.sln文件,则将创建“ packages”文件夹,并且项目可以正确编译。但是,如果我打开Master.sln(包含两个子项目)并进行编译,则将在与Master.sln文件相同的级别上创建“ packages”文件夹,但这些项目不会生成,我假设因为他们找不到包裹。

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

使用Nuget包进行多项目设置

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

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

并且Visual Studio 2017的默认nuget版本为 4.0 及更高版本。

因此,在Master.sln文件级别上不可能只有一个package.config。