0

我有一个解决方案,其中包含多个项目,例如说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

要回答你的问题,不,你没有与openwrap做任何事,所有的项目导入一个范围内的所有依存关系,所以更新适用于一切。

我无法回答其他软件包管理器,但在openwrap中,您需要在源代码控制中添加/ wraps文件夹,并在添加或更新它们时添加这些软件包。该过程将首先从远程存储库添加软件包(或者如果没有可用的组件,则从现有组件创建一个),然后手动删除/ lib中的引用。在OpenWrap中,我们不会将引用添加到您的csproj中,我们在构建时添加它们,因此如果/ lib中已经存在依赖项,我们将不会添加它。这意味着您可以添加所有软件包,并逐个删除引用,每次运行测试。

希望这是一个暂时性的问题,直到所有的dll都可以作为软件包使用,这将会发生的很快。

+0

谢谢,Sebastion - 我相应地更新了我的俗气流程。 – Berryl 2011-02-16 19:01:43