我可以告诉你,核心的 OpenWrap 具有内置的一切,可以做你想做的事。您可以使用 openwrap-shell 执行的所有操作也可以从 msbuild 中调用。因此,在我看来,您只需要添加一个 before build 钩子来调用 openwrap 来执行“update-wrap”。几个月前,我实际上考虑过做类似的事情。AFAIR 我实际上编写了一个 msbuild 脚本来调用 openwrap 任务,但并没有真正将它们挂钩到正常的构建过程中。
我不知道你所说的“在你的仓库中放置一组常量库一次”是什么意思?对于 OpenWrap,您需要做的就是为您的项目维护“openwrap 描述符”。该文件包含项目的所有直接依赖项(对版本号有或没有限制)。(间接依赖会自动引入)你想知道当你有一堆二进制 dll 开始时你是如何开始的吗?我可以告诉你我做了什么。基本上,我不使用任何 NuGet 包,我为所有内容创建了 OpenWrap 包。我还为我们所有的二进制依赖项(其中一些是开源的)创建了 OpenWrap 包。这真的超级简单:在 OpenWrap 描述符中填写正确的依赖项,并指定包必须只包含给定的 dll。
如果您想查看示例,可以查看以下示例:
http ://code.google.com/p/ppwcode/source/browse/dotnet/External/Apache.Log4Net/trunk/Apache.Log4Net.wrapdesc
这就是打包二进制依赖项所要做的一切。这是我创建的一个包,我们目前在我工作的公司中使用它。我知道 Log4Net 可能作为 NuGet 包提供,我可能会使用它。自己创建这些二进制包的好处是,我可以完全控制包、包的版本号、如何将一个大项目拆分为几个较小的包等等。
作为 OpenWrap 存储库,您可以使用本地文件系统上的文件夹或网络共享上的文件夹。我们使用的实际上是一个 webdav 存储库,我们在本地安装在驱动器上(使用 Windows 7)。这对我们来说很好,还允许我们指定谁对存储库具有读写访问权限。
您提到单声道....好吧,这可能是一个问题:当前发布的 OpenWrap (2.0.2) 版本不能在单声道 AFAIK 上运行。但好消息是,Sebastien Lambla 一直在努力让 OpenWrap 在 mono+xbuild 上运行,新版本即将发布:2.0.3。目前还没有可用的 alpha/beta 版本,但您可以从 git 构建。(在这种情况下,您需要同时构建 openwrap-shell 和 openwrap)。创建 OpenWrap 的 Sebastien Lambla 通常会密切关注 StackOverflow 上的问题,并且可能能够为您提供有关单声道状态的更完整答案。
顺便说一句,在我工作的地方,我们已经使用 OpenWrap 一年多了。那时我们比较了 NuGet 和 OpenWrap,那时 OpenWrap 远远领先于 NuGet。基本上,对我来说,NuGet 不是依赖管理工具,而是帮助您在 Visual Studio 中从远程服务器中提取二进制依赖项的工具(意思是:将 dll 从远程服务器复制到本地文件夹并添加对本地 dll 的引用项目文件)。与此同时,NuGet 一直在追赶 OpenWrap,并添加了 OpenWrap 中已经存在的功能。在我看来,NuGet 在 OpenWrap 上只有两件事,那就是集成到 Visual Studio 中(也就是远程可用包的概述和单击单击单击添加包)以及它由 Microsoft 人员维护的事实(AFAIK) . 这两件事都只是政治性的:它' 通过漂亮的界面和微软支持更容易说服人们。然而,就我个人而言,我认为 OpenWrap 在技术上更胜一筹,我认为它没有得到应有的关注真的很遗憾。