项目参考VS NuGet

时间:2018-01-30 15:55:18

标签: visual-studio msbuild nuget solution

我应该如何在同一解决方案中引用project A中的其他project B
如果我:

,我会获得什么以及我将失去什么?
  • 将对project A的引用添加为项目引用。
  • project A
  • 中安装project B的NuGet包

困扰我的事情是构建依赖关系,版本控制......? 或者这完全破坏了解决方案的目的?

3 个答案:

答案 0 :(得分:10)

  

项目参考VS NuGet

项目参考或NuGet是我们开发过程中非常常见的问题,我们需要根据实际情况选择使用哪一个。

例如,如果在开发过程中经常修改引用的项目A,我们建议使用Project引用。因为如果你使用nuget,你必须重建引用的项目,重新创建nuget包,重新安装nuget包到项目B,甚至你必须将它发布到服务器。这将带来许多不必要的工作,我们经常忘记在修改引用的项目A后更新我们的nuget包。如果使用项目引用,则不会出现这些问题。在我们构建项目B之前,修改后的引用项目A将自动更新。

另一方面,当我们从解决方案中分享我们引用的项目A,或者将该项目分享给其他人时,nuget将是更好的选择。它具有更多的可移植性。

因此,当您在同一解决方案中引用项目B中的另一个项目A时,建议使用项目引用,当从解决方案中共享参考项目或将项目共享给其他人时,nuget更合适。

此外,还有一个Visual Studio扩展NuGet Reference Switcher,它自动将NuGet程序集引用切换为项目引用,反之亦然。

希望这有帮助。

答案 1 :(得分:6)

使用第一种方法,您可以获得简单性,因为您不需要生成新版本的ProjectA nuget包,而是您在其中进行的每项更改(即ProjectA.nupkg)。

但是,使用第二种方法,您可以获得可移植性,因为您可以轻松地与其他项目/解决方案共享相同的nuget包。

就个人而言,我仅为目标是与其他解决方案共享的项目创建nuget包。 (例如图书馆和框架)。

希望这有助于您做出决定!

答案 2 :(得分:0)

如今,使用新的csproj格式,您可以同时使用这两个格式(如果两个项目都在同一解决方案中)。

在您的示例中,您可以引用project A中的project B作为项目参考。然后,如果您想将project A作为NuGet软件包发布,则只需在PropertyGroup内的csproj中添加以下标签:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

剧情曲折:如果您还想将project B作为NuGet软件包发布,只需添加GeneratePackageOnBuild目标-MSBuild会将projectA.nupkg设置为依赖项在projectB.nupkg中。

这样,您可以在内部处理项目,同时将它们作为软件包发布给第三方或其他团队。