我正在尝试发布和使用版本化的NuGet类库包,同时避免本地开发带来的麻烦。这是一个Visual Studio解决方案布局的示例:
| Libraries
| LibraryA
| LibraryB
| LibraryC
| Applications
| ApplicationD
| ApplicationE
这是一个包含共享类库和多个应用程序的单一解决方案。目前应用程序对类库的引用是本地的解决方案引用。
我想要做的是将这些类库(A,B,C)发布为有版本号的NuGet包,然后按需要(D,E)由应用程序进行引用。这使得对共享库的更改与部署的应用程序的更新相互独立。如果不这样做,则更改一个库可能会导致十几个或更多应用程序中的二进制文件更改,所有这些都需要进行测试。这是不可取的,而使用NuGet进行版本控制可以解决这个问题。
但是,假设我想同时更新LibraryA和ApplicationD的内容。在切换到NuGet后,我必须更改LibraryA,提交它们,等待包被创建,告诉ApplicationD更新对LibraryA的引用,然后在ApplicationD中进行测试或开发,这比仅使用本地解决方案引用来处理两者要复杂得多。
有没有更好的方法既可维护版本控制的NuGet共享类库的稳健性,又可以保持开发过程的简单性,即使跨多个项目和应用程序也是如此?我找到的唯一其他解决方案都涉及太多开销或问题,例如不断在NuGet包和本地项目之间更改ApplicationD的引用。
编辑:为了澄清前提条件,本问题假设以下内容:
- 架构(解决方案和项目组织)不能被重大改组
- 共享库将以非微不足道的频率进行更改
- 更改共享库不会强制更新任何应用程序
- 应用程序可以引用不同版本的共享库