项目参考VS NuGet

问题描述 投票:7回答:3

我应该如何在同一解决方案中引用project A的另一个project B? 如果我:我获得了什么以及我将失去什么?

  • 添加对project A的引用作为项目引用。
  • project A中安装project B的NuGet包。

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

visual-studio msbuild nuget solution
3个回答
7
投票

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

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

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

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


13
投票

项目参考VS NuGet

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

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

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

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

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

希望这可以帮助。


2
投票

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

在您的示例中,您可以引用project A中的project B作为项目引用。然后,如果你想将project A作为NuGet包发布,你只需要在PropertyGroup里面添加以下标签:csproj:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

情节扭曲:如果你想将project B作为NuGet包发布,只需添加GeneratePackageOnBuild目标 - MSBuild将projectA.nupkg设置为projectB.nupkg中的依赖项。

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

© www.soinside.com 2019 - 2024. All rights reserved.