项目参考 VS NuGet
Project reference VS NuGet
我应该如何在同一解决方案中引用 project B
中的另一个 project A
?
如果我:
我会得到什么,我会失去什么?
- 添加对
project A
的引用作为项目引用。
- 在
project B
中安装project A
的NuGet包。
令我困扰的是构建依赖项、版本控制..?
或者这是否完全破坏了解决方案的目的?
使用第一种方法,您获得了简单性,因为您不需要生成新版本的 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
.
中的依赖项
这样您就可以在内部处理您的项目,同时将它们作为包发布给第三方或其他团队。
我应该如何在同一解决方案中引用 project B
中的另一个 project A
?
如果我:
- 添加对
project A
的引用作为项目引用。 - 在
project B
中安装project A
的NuGet包。
令我困扰的是构建依赖项、版本控制..?
或者这是否完全破坏了解决方案的目的?
使用第一种方法,您获得了简单性,因为您不需要生成新版本的 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
:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
剧情转折:如果您也想将 project B
作为 NuGet 包发布,只需添加 GeneratePackageOnBuild
目标 - MSBuild 将设置 projectA.nupkg
作为 projectB.nupkg
.
这样您就可以在内部处理您的项目,同时将它们作为包发布给第三方或其他团队。