dotnet 为什么每个项目都会输出一个 NuGet 包而不是一个包带所有项目
在使用 dotnet 打 NuGet 包的时候会发现是每个项目都生成独立的一个 NuGet 包,通过 NuGet 引用依赖指向依赖的项目。那为什么不是我最终只打出一个 NuGet 包,这个 NuGet 包,包含了所有的项目的输出文件?每个项目独立输出是为了解决什么问题?下面让我为你解答 咱不和官方文档等说原因,咱从问题出发 假设咱有两个库项目分别是 A 和 B 两个项目,而 A 项目依赖 B 项目 假设咱决定打包的时候将 A 和 B 两个项目的输出文件 A.dll 和 B.dll 打到一个 NuGet 包里面。很好,此时就只有一个NuGet包,其他开发者安装这个 NuGet 包就拿到了 A.dll 和 B.dll 了,完美 后续小伙伴发现 B 项目需要维护,于是更新了 B 项目的代码。而此时就需要更新一个 NuGet 包,这个 NuGet 包需要包含 A 和 B 的两个项目,因为咱一开始就将 A.dll 和 B.dll 放在相同的一个 NuGet 包里面 此时其他开发者就纳闷了,我就想要更新 B.dll 为什么你也将 A.dll 也给我更新了 这就引入了一个问题,无法做到单独更新,必须捆绑 A 和 B 在一起。这对于补丁发布特别不利 在终于说服了其他开发者 A.dll 其实没改啥东西,就给你挖了几个坑,加班几天你就能修好了。其他开发者终于肯升级整个 NuGet 包了