0

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

我想任何包管理器(NuGet 和 OpenWrap 是我正在研究的两个)都需要为包创建它自己的“已知”位置。因此,尽管老式的包管理方式,在手动更新我的 Lib 文件夹后,我知道每个依赖于 nunit 的项目都刚刚更新。

但是,如果我使用包管理器进行更新,我需要访问每个项目以确保它已更新并指向相同的引用,是吗?并且可能找不到某些 dll(我现在正在考虑 unHAdins),因此您并没有完全摆脱手动包管理的束缚。这意味着直到每个项目都由包管理器更新后才会迁移到最新更新。

所以我想知道我的理解是否正确,将包管理合并到一个体面的解决方案中的最佳方法是什么 - 例如:

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  

听起来对吗?

干杯,
贝里尔

4

1 回答 1

1

要回答您的问题,不,您不必对 openwrap 做任何事情,所有项目都会导入范围内的所有依赖项,因此更新适用于所有内容。

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

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

于 2011-02-15T16:35:53.297 回答