【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

OpenWrap:面向.NET 兼容于 MSBuild 的包管理器

  • 2010-06-01
  • 本文字数:892 字

    阅读完需:约 3 分钟

包管理器在 Linux 世界中是再平常不过的东西了,用于从各种来源中获取依赖。优秀的包管理器提供了统一的方式来获取程序库和应用,同时还会得到正确版本的依赖,我们不用担心这些程序库和依赖的来源,包管理器会帮我们打点好一切。对于 Ruby 程序员来说,使用最多的包管理器是 RubyGems ;在 Perl 世界中则是 CPAN module ,它位于 Comprehensive Perl Archive Network

对于.NET 开发者来说却没有这样一个利器。即便只使用微软自己的组件,所需的程序库也散布在微软众多的站点和其他一些依赖站点如 SourceForge 和 CodePlex 上。随着人们对非微软项目(如 Castle Windsor 和 NHibernate 等)信任度的不断提升,这些问题也逐步得到了解决。

Sebastien Lambla 在 Progressive.NET 的演讲中介绍了 OpenWrap :以二进制形式管理依赖的项目。 Robert Pickering 总结了 OpenWrap 的使用方式:

包以 zip 形式存放在中央服务器上。OpenWrap 提供了一个 DSL,这样你就可以指定使用哪个包、哪个版本了(其所用的语法非常灵活,可以指定最小和最大的版本号)。OpenWrap 提供了一套 msbuild 目标,这样就可以将基于 DSL 的描述插入到构建过程中了,当然,这里指的是 Visual Studio。接下来,这些 msbuild 目标会负责下载所需的项目并将依赖存储在本地机器上的中央缓存中,这个中央缓存能够提供项目构建所需的引用。

OpenWrap 并非.NET 生态圈中首个包管理器,最近发布的 Bricks 项目的目标也是如此,不过 Bricks 项目目前只提供了命令行工具,此外还有 WebGAC ,奇怪的是它还需要用到 Apache。

由于 OpenWrap 还处在孵化期,因此很多地方都需要手工编辑项目文件才能调用 OpenWrap 而非 C#编译器。通过在“包装描述器”中列出依赖,OpenWrap 能自动下载必要的 DLL 并添加到项目中。由于引用关系是由 OpenWrap 管理的,因此他们并不会出现在解决方案管理器的引用文件夹中。

包是基于 ZIP 格式的,这种文件格式对于 Windows 程序员是耳熟能详的,此外,由于将头信息存储在文件末尾,因此它的可扩展性也是非常棒的;因为这部分空间是无用的,因此可以存放数字签名信息。

查看英文原文: OpenWrap – A Plan for MSBuild Compatible Package Manager for .NET

2010-06-01 01:11941
用户头像

发布了 88 篇内容, 共 258.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Go 与异步 IO - io_uring 的思考

IceberGu

Linux 异步IO io_uring Go 语言

JAVA魅力之神奇的数组带给你不一样的乐趣

小Q

Java 学习 架构 面试 数组

华为20级工程师吐血整理出600页Spring微服务架构设计,绝了!

996小迁

Java spring 编程 架构 微服务

架构师训练营第 1 期第 7 周作业

业哥

详解软件行业低代码开发平台以及敏捷开发方案

Marilyn

敏捷开发

2020双十一终极清单!阿里云CDN&视频云最全优惠攻略

阿里云Edge Plus

CDN

华为云FusionInsight湖仓一体解决方案的前世今生

华为云开发者联盟

数据库 华为 仓库

阿里P8架构师呕心沥血整理的【Docker实战】文档带你玩转Docker。

Java架构之路

Java 程序员 架构 面试 编程语言

华为云“创原会”:40+技术精英论道云原生2.0

华为云开发者联盟

k8s 华为云

如何快速构建Spring Boot基础项目?

田维常

spring Boot Starter

丑陋的程序员

程序员陆通

程序员 职场 认知

阿里二面惨败,痛定思痛狂刷1000+面试题,成功五面上岸滴滴(面经+面试题分享)

Java架构追梦

Java 架构 腾讯 面试 蚂蚁金服

区块链数字货币商城系统开发技术

薇電13242772558

区块链 数字货币

用时半个月,终于把2020年各大公司的Java面试题精选整理成文档了

Java架构之路

Java 架构 面试 编程语言

WebSocket连接错误Error during WebSocket handshake Unexpected response code 404

洛神灬殇

基于服务设计的线上展览

京东科技开发者

云安全

从零实现一个动态表单设计(编辑)器

徐小夕

Java 编辑器 H5 Node React

Java-技术专题-时间工具类的使用方案

洛神灬殇

阿里P8Java大神给迷茫的程序员一些中肯建议:“请不要再虚度光阴了!”

Java架构之路

Java 阿里巴巴 程序员 架构 编程语言

产品经理团队的管理秘法

马踏飞机747

管理 产品经理 团队

MySQL-技术专题-STRAIGHT_JOIN

洛神灬殇

【原创】SpringBoot 这几种配置文件方式,你都用过吗?

田维常

spring Boot Starter

网络直播打赏背后的套路:刺激用户不理智消费

石头IT视角

Flink State 误用之痛,你中招了吗?

Apache Flink

flink

物联网时代存储告急 边缘存储如何缓解存储压力?

京东科技开发者

云计算 云服务 云存储

只需三步,带你从0到1玩转React,附源码我一定给你讲明白

小Q

Java 学习 编程 架构 面试

国家超算深圳中心计划2年内提升计算能力至少1000倍;图神经网络的生成式预训练论文解读

京东科技开发者

云计算

sharding-jdbc 分库分表的 4种分片策略,还蛮简单的

程序员小富

Java 分库分表

为什么11·11物流一年比一年快?奥秘就在这里!

华为云开发者联盟

物联网 物流 仓储

MySQL-技术专题-创建临时表

洛神灬殇

浅析一个较完整的SpringBoot项目

田维常

spring Boot Starter

OpenWrap:面向.NET兼容于MSBuild的包管理器_.NET_Jonathan Allen_InfoQ精选文章