我应该如何在同一解决方案中引用project A
的另一个project B
?
如果我:我获得了什么以及我将失去什么?
project A
的引用作为项目引用。project A
中安装project B
的NuGet包。困扰我的事情是构建依赖,版本化......? 或者这完全破坏了解决方案的目的?
使用第一种方法,您可以获得简单性,因为您不需要生成新版本的ProjectA nuget包,而是每次更改它(即ProjectA.nupkg)。
但是,使用第二种方法,您可以获得可移植性,因为您可以轻松地与其他项目/解决方案共享相同的nuget包。
就个人而言,我只为那些目标是与其他解决方案共享的项目创建nuget包。 (例如图书馆和框架)。
希望这有助于您做出决定!
项目参考VS NuGet
项目参考或NuGet是我们开发过程中非常常见的问题,我们需要根据实际情况选择使用哪一个。
例如,如果在开发过程中频繁修改引用的项目A,我们建议使用Project引用。因为如果你使用nuget,你必须重建引用的项目,重新创建nuget包,重新安装nuget包到项目B,甚至你必须将它发布到服务器。这将带来许多不必要的工作,我们经常忘记在修改引用的项目A后更新我们的nuget包。如果使用项目引用,则不会出现这些问题。在我们构建项目B之前,修改后的引用项目A将自动更新。
另一方面,当我们从解决方案中分享我们引用的项目A,或者将该项目分享给其他人时,nuget将是更好的选择。它具有更多的可移植性。
因此,当您在同一解决方案中引用项目B中的另一个项目A时,将建议项目引用,当从解决方案共享参考项目或将项目共享给其他人时,nuget更合适。
此外,还有一个Visual Studio扩展NuGet Reference Switcher,它可以自动将NuGet程序集引用切换到项目引用,反之亦然。
希望这可以帮助。
现在使用新的csproj格式,您可以同时使用这两种格式(如果您在同一解决方案中同时使用这两个项目)。
在您的示例中,您可以引用project A
中的project B
作为项目引用。然后,如果你想将project A
作为NuGet包发布,你只需要在PropertyGroup
里面添加以下标签:csproj:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
情节扭曲:如果你想将project B
作为NuGet包发布,只需添加GeneratePackageOnBuild
目标 - MSBuild将projectA.nupkg
设置为projectB.nupkg
中的依赖项。
这样,您可以在项目内部工作,同时将它们作为包发布给第三方或其他团队。