我正在研究nuget在开发过程中改进依赖关系(内部和第三方)的自动处理。
只要您通过CI构建服务器开发,一切都很好:
但是,我想知道是否可以在本地作为单个开发人员工作,而不必等待CI Build Server生成新的包?
Nuget有一个功能Package Restore,它将在构建时自动下载所有依赖项。您还可以列出程序包还原应查找程序包的存储库顺序。
如果工作流程可能变为:
这可能使用Visual Studio,MSBuild,CI构建服务器和nuget吗?我特别感兴趣的是在本地开发时制作本地包。
请注意,我有本机项目,但除了生成nuget包后构建时,这将是一个工作流程,我希望它应该适用于C#和C ++项目。
答案 0 :(得分:3)
我现在所拥有的解决方案虽然远非理想,但却是我能想到的最佳解决方案。哦!这是一项正在进行中的工作,因此我会在未来几周/几个月内改变,因为我想知道如何解决这些问题。
我现在大部分时间都要处理托管DLL,但我确实有一些本机代码和最糟糕的多平台本机代码来处理。
创建一个本地存储库,基本上只是一个文件夹,并在nuget feed列表中对其进行配置。
然后我创建了一个任务(MSBuild),它将打包项目并将其输出到本地存储库的根文件夹中。确保包的版本始终在增加。目前我通过编辑程序集版本手动执行此操作。
构建完成后,更新引用它的其他项目,我通常通过包管理器控制台(update-package)来执行此操作。
每个已更新的项目,将其版本冲洗车床并重复,直到您进入最顶层的项目(实际程序)。
一旦一切都很好并且您已准备好提交,那么构建系统应该自己打包并将其发送到您的官方存储库。
好
错误
丑陋
仅限
我很想带来Maven理智的依赖管理,但到目前为止,我还没有发现nuget足够成熟,甚至没有考虑过向开发团队提出建议。
答案 1 :(得分:2)
当然可以。在我们的解决方案中,NuGet将库停放在解决方案层次结构的“packages”目录中,该目录最终保存在TFS中。这允许完整的解决方案检出,包括所需的库。如果您打算更新通常由NuGet提供的库,则需要更新依赖项目的引用以指向包含通常由NuGet进程提供的更新代码的项目。
在签入常规解决方案工作(而不是NuGet相关的库)之前,请确保解决方案的NuGet库是最新的,并且解决方案中的引用指向NuGet安装的库。当然,您将事先登记并获取与NuGet相关的库。