English 中文(简体)
查找 msbuilding 和 xbuilding 任务以获取引用的库( 没有 nuget.exe)
原标题:Looking for an msbuild and xbuild task to fetch referenced libraries (without nuget.exe)

我有一个问题 要为我的建筑系统 创造一个简单的解决方案, 以单体为基础。

目前的情况是,我把我的参考图书馆保存在Git库内,由于许多明显的原因,情况并不好。

我想实现的是像NuGet提供的东西—— 从网络上自动下载数据, 放在某个目录中, 忘记它们。

我想在建设时这样做,所以不需要下载图书馆等的额外行动。 最好的选择是Msbuilding(建在单项上)任务, 但我希望它能独立, 所以执行NuGet. exe(执行NuGet. exe)这个受欢迎的系统是不容置疑的( 认为平行的单项装置, 等等 ) 。

我尝试过Pepita项目,但它是错误的。 不,真的,它有许多设计错误,容易使用或修理。要正确配置,整个项目需要认真重写。

我最喜欢的是一个图书馆,该图书馆将使用 NuGet.Core 库,并作为一个任务提供。如果这个 lib 库不存在,我可以使用任何解决方案, 下载一个 nuget 软件包, 并将其解包到.csproj 指定的目录中 。

更好的是,如果这样一个图书馆能够解决依赖关系,而不在包件中明确指定它们。 config(或类似)文件,例如,如果我想包括城堡。 Windsor 我不想包括城堡。Core在我的配置文件中。

我知道OpenWrap项目(与NuGet Gallery合作), 它看起来很有希望, 但我无法找到一个解决方案,

最佳回答

我可以告诉你核心的 OpenWrap 拥有一切内在内容可以做你想做的事。 您可以做的一切, 都可以从 msbuilding 中被调用。 因此, 在我看来, 您只需要在建构前添加一个钩子来呼唤打开信封来完成一个“ 更新信封 ” 。 几个月前, 我实际上在做类似的事情。 AFAIR I 实际上写了一个 msbuilding 脚本来调用打开信封任务, 但并没有把它们真正连接到正常的构建进程 。

对于 OpenWrap 来说, 您需要做的就是维护您的工程的“ 打开信封描述符 ” 。 该文档包含您工程的所有直接依赖性( 不论是否对版本编号有限制 ) 。 ( 间接依赖性被自动拉入 ) 您是否想知道当您有一堆二进制图纸要开始的时候您是如何开始的? 我可以告诉你我做了什么。 基本上, 我并不使用任何 Nuget 软件包, 我为每件事创建了 OpenWrap 软件包。 我还为我们所有的二进制依赖性( 其中一些是开源的) 创建了 OpenWrap 软件包 。 这非常简单: 您在 OpenWrap 描述符中填写正确的依赖性, 并指定软件包必须包含给定的图纸 。 我们有一堆二进制依赖性, 但是一旦你开始包装它们, 它肯定不是很多工作 。

If you want to see an example, you can check this one: 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) 目前发行版本的 OpenWrap (2. 0.2) 并不在单体 AFAIK上运行。 但好消息是Sebastien Lambla 一直努力让 OpenWrap 运行到 单体+X 建设中, 新版本将很快发布: 2.0. 3。 目前还没有任何alpha/beta 建构, 但您可以用 git 来建建。 (在这种情况下, 您需要同时建开包壳和开包。 ) Sebastien Lambla 创建了 OpenWrap, 通常关注StackOverproll 的问题, 并且可能能够给你们一个更完整的单一状态答案 。

Btw, 在我工作的地方, 我们使用 OpenWrap 已经超过一年了 。 当时我们比较了 NuGet 和 OpenWrap 。 当时我们比较了 NuGet 和 OpenWrap, 而 OpenWrap 远比NuGet 提前了一步。 对我来说, NuGet 并不是一个依赖管理的工具, 而是帮助您在视觉工作室里从远程服务器上拉出二进线依赖性的工具( 意思是: 从远程服务器复制到本地文件夹, 并在项目文件中添加本地文件参考 ) 。 在那个时候, NuGet 一直在玩 OpenWrap 的追赶, 并且增加了 OpenWrap 中已经存在的功能。 在我看来, NuGet 超过 OpenWrap 的功能只有两件, 而在视觉工作室里( 远程软件包的概览和点击添加软件包), 是一个工具来帮助您从远程操作 。 这两个东西都是政治性的 。 。 这两个东西都比较容易 。 但是, 用一个漂亮的接口和微软支持的人比较容易 。 我认为 Op 。 我认为, 在技术上比较高级, 我认为 Op 和微软。

问题回答

暂无回答




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签