项目参考 VS NuGet

Project reference VS NuGet

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

我会得到什么,我会失去什么?

令我困扰的是构建依赖项、版本控制..?
或者这是否完全破坏了解决方案的目的?

使用第一种方法,您获得了简单性,因为您不需要生成新版本的 ProjectA nuget 包,您在其中所做的每个更改(即 ProjectA.nupkg)。

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

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

希望这可以帮助您做出决定!

Project reference VS NuGet

项目引用或者NuGet是我们开发过程中很常见的问题,我们需要根据自己的实际情况来选择使用哪一个。

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

另一方面,当我们分享我们引用的项目A的解决方案,或者将那个项目分享给其他人时,nuget将是一个更好的选择。更便携

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

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

希望对您有所帮助。

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

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

中的 csproj
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

剧情转折:如果您也想将 project B 作为 NuGet 包发布,只需添加 GeneratePackageOnBuild 目标 - MSBuild 将设置 projectA.nupkg 作为 projectB.nupkg.

中的依赖项

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