【问题标题】:package managers, project structure and migration包管理器、项目结构和迁移
【发布时间】:2011-06-26 22:49:00
【问题描述】:

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

听起来对吗?

干杯,
浆果

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,Sebastion - 我相应地更新了我的俗气的流程。
    • 等等,这里出了点问题,因为我无法在尝试使用 log4net 的 VS 中构建我的项目。这是因为csproj中没有引用。我也找不到一个可以解释这个问题的教程,你的介绍只是跳过了这一步 - 我的意思是“哦,在这里你可以看到 VS 不再抱怨 log4net - 不再是红色”部分。在我的项目中,红色仍然存在,我无法编译。
    • 好的,我可以看到,这对我来说很明显,问题是我没有使用导致编译问题的完全限定类型名称。但是我看到了 2 个问题:1)我的 R# 仍然抱怨不理解 log4net 程序集的任何内容(红色)2)我不想完全限定 OpenWrap 管理的库中的所有类型
    • 至于第二个问题,我知道我可以手动编写我的 usings,但我不想导致那是 R# 的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多