Visual studio 项目参考VS NuGet
我应该如何引用同一解决方案中Visual studio 项目参考VS NuGet,visual-studio,msbuild,nuget,solution,Visual Studio,Msbuild,Nuget,Solution,我应该如何引用同一解决方案中项目B中的另一个项目A? 如果我: 将对项目A的引用添加为项目引用 在project B中安装project A的NuGet软件包 困扰我的是构建依赖关系、版本控制……? 或者这会完全破坏解决方案的用途吗?使用第一种方法,您可以获得简单性,因为您不需要生成新版本的ProjectA nuget包,也不需要对其进行任何更改(即ProjectA.nupkg) 但是,使用第二种方法,您可以获得可移植性,因为您可以轻松地与其他项目/解决方案共享相同的nuget包 就个人而言
项目B
中的另一个项目A
?
如果我:
- 将对
项目A的引用添加为项目引用
- 在
中安装project B
的NuGet软件包project A
或者这会完全破坏解决方案的用途吗?使用第一种方法,您可以获得简单性,因为您不需要生成新版本的ProjectA nuget包,也不需要对其进行任何更改(即ProjectA.nupkg) 但是,使用第二种方法,您可以获得可移植性,因为您可以轻松地与其他项目/解决方案共享相同的nuget包 就个人而言,我只为目标是与其他解决方案共享的项目创建nuget包。(例如LIB和框架) 希望这能帮助你做出决定 项目参考VS NuGet 项目引用或NuGet是我们开发过程中非常常见的问题,我们需要根据实际情况选择使用哪一个 例如,如果在开发过程中频繁修改引用的项目A,我们建议使用项目引用。因为如果使用nuget,则必须重建引用的项目,重新创建nuget包,将该nuget包重新安装到项目B,甚至必须将其发布到服务器。这将带来大量不必要的工作,并且在修改引用的项目a之后,我们经常忘记更新我们的nuget包。如果您使用项目引用,您将不会遇到这些问题。在我们构建项目B之前,修改后的引用项目A将自动更新 另一方面,当我们在解决方案之外共享引用的项目,或者将该项目共享给其他人时,nuget将是一个更好的选择。它具有更大的可移植性 因此,当您在同一解决方案中引用项目B中的另一个项目A时,建议使用项目引用。在解决方案外共享参考项目或将项目共享给其他人时,nuget更合适 此外,还有一个VisualStudio扩展,它自动将NuGet程序集引用切换到项目引用,反之亦然
希望这能有所帮助。如今,使用新的csproj格式,您可以同时使用这两种格式(如果您在同一个解决方案中有两个项目) 在您的示例中,您可以将
项目B
中的项目A
作为项目参考。然后,如果您想将项目作为NuGet包发布,只需将以下标记添加到属性组中的csproj中即可:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
true
绘图扭曲:如果您也想将projectB
发布为NuGet包,只需添加GeneratePackageOnBuild
target-MSBuild将projectA.nupkg
设置为projectB.nupkg
中的依赖项
通过这种方式,您可以在内部处理项目,同时将其作为包发布给第三方或其他团队。项目参考是一种自然的选择。您遇到的问题到底是什么?项目与包引用和解决方案/回购分离通常更符合版本和发布周期的管理方式,以及开发团队在技术需求上的结构。发布NuGet包时,您可以使用.nuspec文件对旧项目执行此操作,如果引用的项目具有.nuspec文件,它将自动将其添加为NuGet
引用。如果更改项目a但忘记发布其新版本,然后使用依赖于新更改的代码发布项目B,会发生什么情况?如果两个项目位于同一解决方案中,您可以同时执行更改并将其一起发布。如果您只是将projectB推送到提要,那么它将引用当前不存在的projectA包版本,因此您需要确保将它们一起发布。NuGet软件包需要一个良好的CI\CD进程。您正在描述一些不同的内容。生成包与引用包不同。为了与问题相关,项目A
必须能够引用项目B
,同时引用B.nupkg
。在这种情况下,VS有点古怪——如果第二个添加NuGet引用,它会在解决方案资源管理器中使用黄色警告符号保留引用。如果第二个添加了project ref,它将卸载冲突的NuGet包(静默地,这不是理想的UX)。你是对的,它添加的内容比问题所要求的要多。我的解决方案添加的是两个选项的合并:您可以在解决方案中引用A作为项目,但如果您要发布B,则A将自动作为包引用。当使用旧的csproj格式时,情况并非如此,在旧的csproj格式中,B包将只在其lib文件夹中包含所有引用的二进制文件。