包管理器,项目结构和迁移

时间:2011-02-14 13:54:35

标签: visual-studio nuget project-structure package-managers openwrap

我有一个包含多个项目的解决方案,例如10个测试相关项目依赖于nunit。目前我的解决方案结构包括Tools和Lib的文件夹,所以也许完整的nunit下载在Tools中,而且只是lib中的dll。

我认为任何包管理器(我正在看两个NuGet和OpenWrap)需要为包创建它自己的“已知”位置。因此,在手动更新我的Lib文件夹之后,采用传统的包管理方式,我知道每个对nunit具有依赖性的项目都已更新。

但是如果我使用包管理器更新,我需要访问每个项目以确保它更新并指向相同的参考,是吗?可能找不到一些dll(我现在正在考虑unHAddins)所以你并没有完全从手动包管理中解放出来。在包管理器更新每个项目之前,不会迁移到最新更新。

所以我想知道我的理解是否正确,将包管理纳入合适规模的解决方案的最佳方法是 - 例如:

0) add to source control: NuGet 'packages' folder or OpenWrap 'wraps' folder  
1) pick a dll (start with one that you beleieve has minimal dependencies)  
2) pick a project (ideally with minimal dependencies that might break)  
3) if OpenWrap, get the package you want into 'wraps'
4) for each project:  
    a) add reference to subject dll (manually if OpenWrap, NuGet will add for you)  
    b) fix compile error as needed  
    c) run tests  

这听起来不错吗?

干杯,
Berryl

1 个答案:

答案 0 :(得分:1)

要回答您的问题,不需要对openwrap执行任何操作,所有项目都会导入范围内的所有依赖项,因此更新适用于所有内容。

我无法回答其他的包管理器,但是在openwrap中,你需要在源控件中添加/ wraps文件夹,其中包含在添加或更新它们时被拉出的包。该过程将首先从远程存储库添加包(或者如果没有可用的存储库,则从现有程序集中创建一个包),并手动删除/ lib中的引用。在OpenWrap中,我们不添加对csproj的引用,我们在构建时添加它们,所以如果/ lib中已经存在依赖关系,我们就不会添加它。这意味着您可以添加所有包,并逐个删除引用,每次都运行测试。

希望这是一个临时问题,直到所有dll都可以作为软件包提供,这将很快发生。