- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在为我的构建系统创建一个基于单声道的简单解决方案时遇到了问题。
目前的情况是我将引用的库保存在 git 存储库中,这并不好,原因有很多。
我想要实现的是类似于 NuGet 提供的东西 - 自动从 Web 下载 dll,将它们放在某个目录中并忘记它们。
我想在构建时执行此操作,因此下载库等不需要任何额外操作。最好的选择是 msbuild(xbuild on mono)任务,但我希望它独立于系统,所以很受欢迎,执行 NuGet.exe 是不可能的(考虑并行单声道安装等)。
我已经尝试过 Pepita 项目,但它......错了。不,真的,它有太多设计错误,难以使用或修复。要进行正确的配置,需要对整个项目进行认真的重写。
我会怎样爱是一个库,它将使用 NuGet.Core 库并作为任务提供。如果没有这样的库,我可以使用任何解决方案,下载一个 nuget 包并将其解压缩到 .csproj 中指定的目录。
更好的是,如果这样的库可以解决依赖关系而不在 packages.config (或类似)文件中明确指定它们,那就太好了,例如如果我想包含 CaSTLe.Windsor,我不想在我的配置文件中包含 CaSTLe.Core。
我知道 OpenWrap 项目(带有 NuGet Gallery),它看起来很有希望,但我找不到我只需放置 的解决方案常数 我的仓库中的一组库一次,修改 csproj 文件,一些配置并完成它。
最佳答案
我可以告诉你,核心的 OpenWrap 具有内置的一切,可以做你想做的事。您可以使用 openwrap-shell 执行的所有操作也可以从 msbuild 中调用。因此,在我看来,您只需要添加一个 before build 钩子(Hook)来调用 openwrap 来执行“update-wrap”。几个月前,我实际上考虑过做类似的事情。 AFAIR 我实际上编写了一个 msbuild 脚本来调用 openwrap 任务,但并没有真正将它们 Hook 到正常的构建过程中。
我不知道你所说的“在你的仓库中放置一组常量库一次”是什么意思?对于 OpenWrap,您需要做的就是为您的项目维护“openwrap 描述符”。该文件包含项目的所有直接依赖项(对版本号有或没有限制)。 (间接依赖会自动引入)你想知道当你有一堆二进制 dll 开始时你是如何开始的吗?我可以告诉你我做了什么。基本上,我不使用任何 NuGet 包,我为所有内容创建了 OpenWrap 包。我还为我们所有的二进制依赖项(其中一些是开源的)创建了 OpenWrap 包。这真的 super 简单:在 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 在技术上更胜一筹,我认为它没有得到应有的关注真的很遗憾。
关于c# - 寻找一个 msbuild 和 xbuild 任务来获取引用的库(没有 nuget.exe),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757676/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: template pass by value or const reference or…? 以下对于将函数
我用相同的参数列表重载了一个运算符两次。但返回类型不同: T& operator()(par_list){blablabla} const T& operator()(par_list){bla
假设我有实现接口(interface) I 的 Activity A。我的 ViewModel 类 (VM) 持有对实现接口(interface) I 的对象的引用: class A extends
PHP 如何解释 &$this ?为什么允许? 我遇到了以下问题,这看起来像是 PHP 7.1 和 7.2 中的错误。它与 &$this 引用和跨命名空间调用以及 call_user_func_arr
谁能解释一下下面“&”的作用: class TEST { } $abc =& new TEST(); 我知道这是引用。但是有人可以说明我为什么以及什么时候需要这样的东西吗?或者给我指向一个对此有很好解
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 C++ 引用 vs 指针 引用很容易与指针混淆,它们之间有三
目录 引言 背景 结论 引言 我选择写C++中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受是因为我主持过很多C++的面试,并且我很少
Perl 中的引用是指一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至函数,可以应用在程序的任何地方 创建引用 定义变量的时候,在变量名前面加个 \,就得到了这个变量的一个引用 $sc
我编写了一个将从主脚本加载的 Perl 模块。该模块使用在主脚本中定义的子程序(我不是维护者)。 对于主脚本中的一个子例程,需要扩展,但我不想修补主脚本。相反,我想覆盖我的模块中的函数并保存对原始子例
我花了几个小时试图掌握 F# Quotations,但我遇到了一些障碍。我的要求是从可区分的联合类型中取出简单的函数(只是整数、+、-、/、*)并生成一个表达式树,最终将用于生成 C 代码。我知道使用
很多时候,问题(尤其是那些标记为 regex 的问题)询问验证密码的方法。似乎用户通常会寻求密码验证方法,包括确保密码包含特定字符、匹配特定模式和/或遵守最少字符数。这篇文章旨在帮助用户找到合适的密码
我想通过 MIN 函数内的地址(例如,C800)引用包含文本的最后一个单元格。你能帮忙吗? Sub Set_Formula() ' ----------------------------- Dim
使用常规的 for 循环,我可以做类似的事情: for (let i = 0; i < objects.length; i++) { delete objects[i]; } 常规的 for-
在 Cucumber 中,您定义了定义 BDD 语法的步骤;例如,您的测试可能有: When I navigate to step 3 然后你可以定义一个步骤: When /^I navigate t
这是什么UnaryExpression的目的,以及应该怎样使用? 最佳答案 它需要一个 Expression对象并用另一个 Expression 包裹它.例如,如果您有一个用于 lambda 的表达式
给出以下内容 $("#identifier div:first, #idetifier2").fadeOut(300,function() { // I need to reference jus
我不知道我要找的东西的正确术语,但我要找的是一个完整的引用,可以放在双引号之间的语句,比如 *, node()、@* 以及所有列出的 here加上任何其他存在的。 我链接到的答案提供了一些细节,但还
This question's answers are a community effort。编辑现有答案以改善此职位。它当前不接受新的答案或互动。 这是什么? 这是常见问答的集合。这也是一个社区Wi
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
考虑下一个代码: fn get_ref(slice: &'a Vec, f: fn(&'a Vec) -> R) -> R where R: 'a, { f(slice) } fn m
我是一名优秀的程序员,十分优秀!