我有一个包含多个项目的解决方案,例如,10个与测试相关的项目依赖于nunit。目前我的解决方案结构包括Tools和Lib的文件夹,所以可能完整的nunit下载在Tools中,而dll在Lib中。
我认为任何包管理器(我正在考虑的两个是NuGet和OpenWrap )都需要为包创建自己的“已知”位置。因此,在手动更新我的Lib文件夹之后,我知道每个依赖于nunit的项目都更新了。
但是如果我使用包管理器更新,我需要访问每个项目以确保它被更新并指向相同的引用,对吗?一些动态链接库可能找不到(我现在认为是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
发布于 2011-02-16 00:35:53
要回答你的问题,不,你不需要做任何事情,所有的项目都会导入一个作用域中的所有依赖项,所以更新适用于所有东西。
我不能为其他包管理器负责,但在openwrap中,您可以在源代码管理中添加/wraps文件夹,其中包含在添加或更新包时拉出的包。该过程将首先从远程存储库添加包(如果没有可用程序集,则从现有程序集中创建一个),然后手动从/lib中删除引用。在OpenWrap中,我们不会将引用添加到您的csproj中,而是在构建时添加它们,因此如果/lib中已经存在依赖项,我们将不会添加它。这意味着您可以添加所有的包,并一个接一个地删除引用,每次都运行测试。
希望这是一个暂时的问题,直到所有的all都以包的形式可用,这将很快发生。
https://stackoverflow.com/questions/4992967
复制相似问题