我应该如何在同一解决方案中引用project A
中的其他project B
?
如果我:
project A
的引用添加为项目引用。project A
。project B
的NuGet包
困扰我的事情是构建依赖关系,版本控制......? 或者这完全破坏了解决方案的目的?
答案 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
中。
这样,您可以在内部处理项目,同时将它们作为软件包发布给第三方或其他团队。