写点什么

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:111049
用户头像

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

关注

评论

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

iOS 面试策略之系统框架-UIScrollView及其子类

iOSer

ios 面试 UIScrollView UICollectionView

Spark为什么会流行

大数据技术指南

大数据 5月日更

Python-XPath

若尘

Python编程 5月日更

Nginx通过split_client实现客户端分流

运维研习社

nginx 灰度发布 5月日更 分流

Android设备实时音视频传输有效方案

小驰笔记

android 音视频 引航计划

区块链—重构新商业体系和全新商业生态环境

CECBC

ceph-csi源码分析(8)-cephfs driver分析

良凯尔

Kubernetes 源码分析 Ceph CSI

APP透露的焦虑

wgc

杂谈

ceph-csi源码分析(7)-rbd driver-IdentityServer分析

良凯尔

Kubernetes 源码分析 Ceph CSI

聊聊Spring的XML Schema扩展机制的使用方式

Hex

spring

服务调用链相关基础知识

luojiahu

调用链

数据科学指南#基础篇 Bokeh入门

Lev

Python 学习 数据分析 数据科学

20个不良用户体验

老猿Python

程序员 用户体验 程序开发

把Redis当作队列来用,真的合适吗?

Kaito

数据库 redis 队列

花一周整理!Python全系列学习资料,全是干货

Python研究者

量化网格交易策略系统,马丁倍投策略软件源码

腾讯iOS开发要达到咋样的水准?

一意孤行的程序员

ios 程序员 腾讯 面试 ios开发

全国大学生物联网设计竞赛(华为杯)巡回技术讲座“八校联动”,HarmonyOS与校园开发者面对面

Geek_283163

鸿蒙

数据挖掘从入门到放弃(二):决策树

数据社

机器学习 5月日更

打破思维定式(十)

Changing Lin

工业互联网产业数字化,区块链如何协同发力?

CECBC

深入Linux C/C++ Timer定时器的实现核心原理

Linux服务器开发

Linux 后端 网络编程 定时器 Linux服务器开发

全国大学生物联网设计竞赛(华为杯)巡回技术讲座“八校联动”,HarmonyOS与校园开发者面对面

科技汇

k8s POD hosts 文件怎么与主机保持同步那?

Geek_f24c45

Docker Kubernetes

[Netty]- Reactor实现

topsion

reactor Netty io nio

通过实践带你揭开TCP中CLOSE_WAIT和TIME_WAIT的神秘面纱

linux大本营

c++ Linux TCP 网络协议 epoll

用Python找出100以内的质数 - DAY6

Qien Z.

5月日更 ptyhon 找质数 质数

全文检索的介绍

五分钟学大数据

大数据 5月日更

网络攻防学习笔记 Day15

穿过生命散发芬芳

5月日更 网络攻防

企业数字化转型分为三个阶段

石云升

数字化 5月日更

消息队列系统架构设计

王硕

架构训练营

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