如何开始使用 MS-Build

2024-02-02

我希望开始使用 MS-Build。到目前为止,我有很多手动构建的项目(从 Visual Studio)。我想自动化构建过程,并且最好是在我不想安装 Visual Studio 的机器上进行。我开始在 MSDN 上阅读有关 MS-Build 的内容。但我还没有得到从哪里开始以及如何做的逐步指导。我的问题是这样的:

  1. 如何启动 MS-Build?有没有可以下载的?
  2. 第一步是什么?
  3. 如何创建 MS-Build 脚本?

还有很多类似的问题。有人可以指导我吗?


MS Build 附带 .NET Framework 本身,可执行文件 (msbuild.exe) 位于 .NET-framework 目录中,类似于(取决于版本):

  • C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
  • C:\WINDOWS\Microsoft.NET\Framework\v3.5
  • C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

(从开始菜单使用“Visual Studio 命令提示符”时,正确的版本也位于 %path% 中。)

MsBuild 文件是 xml 文件。您可以首先创建一个新的文本文件,例如“c:\myscript.msbuild”,然后将其复制粘贴到该文件中:

<Project DefaultTargets="MyTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="MyTarget">
    <Message Text="Hello world!" Importance="high"/>
  </Target>
</Project>

然后转到命令提示符并键入:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe c:\myscript.msbuild

这是一个好的开始。 :)

然后您可以自定义目标和属性。 第二个例子:

<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(MyCondition)' == 'x'" >
    <MyProperty>World2</MyProperty>
  </PropertyGroup>
  <Target Name="MyTarget">
    <Message Text="Hello" Importance="high"/>
    <Message Text="$(MyProperty)" Importance="high"/>
  </Target>
  <Target Name="MyTarget2">
  </Target>
  <Target Name="All">
     <CallTarget Targets="MyTarget" />
     <CallTarget Targets="MyTarget2" />
  </Target>
</Project>

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe c:\myscript.msbuild /target:mytarget /property:MyCondition=x

您还可以在构建文件中包含构建文件。

<Project DefaultTargets="MyTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="MyExternalProperties.msbuild"/>
  <Target Name="MyTarget">
    <Exec Command="echo Hello world 3"/>
  </Target>
</Project>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何开始使用 MS-Build 的相关文章

随机推荐

  • 如何跟踪 SQL 更新的进度?

    假设我有一个更新 例如 UPDATE db1 sc1 tb1 SET c1 LEFT c1 LEN c1 1 WHERE c1 like 此更新基本上将遍历数百万行并修剪冒号 如果 c1 列中有冒号 我如何跟踪表中的进展情况 Thanks
  • Paradoxon:导入时 Python 的 ctypes.CDLL 会无声崩溃,但直接运行时不会崩溃 - 这怎么可能?

    所以 作为一个 Linux 爱好者 我在 Windows 上偶然发现了一些我无法解释的非常令人费解的事情 我有一个类似于此示例的项目结构 D PROJECT tolkien py init py MiddleEarth gondor py
  • 您从经验中学到了哪些与 C++ 相关的习惯用法、误解和陷阱?

    您从经验中学到了哪些与 C 相关的习惯用法 误解和陷阱 一个例子 class A public char s 1024 char p A A p s void changeS const p 0 a 即使知道changeS是一个const成
  • 当发出 SIGTERM 时,可以在多大程度上依赖写入磁盘?

    我正在为 Linux 进行开发 并且有一个守护进程 当它被杀死时应该写入磁盘 该守护进程可以配置为监听SIGTERM并在收到该信号时写入磁盘 我也很熟悉PrepareForShutdownD Bus信号由登录管理器 http www fre
  • 线程安全的 CopyOnWriteArrayList 反向迭代

    考虑以下代码片段 private List
  • Python Docx表行高

    因此 列宽是使用一列中所有单元格的单元格宽度来完成的 如下所示 from docx import Document from docx shared import Cm file path to file doc Document file
  • python 中 date.toordinal() 的逆是什么?

    在Python中 一个dateobject 可以这样转换为预推格里高利序数 d datetime date year 2010 month 3 day 1 d toordinal 但什么是逆操作呢 相反的是日期 fromordinal ht
  • 我可以将自定义属性传递给 NLOG 并输出到文件吗?

    编辑 4 From 似乎是 NLog 中的保留字 更改它 FromID 有效 这是一种将变量传递给 NLog 并保持代码干净的好方法 谢谢迈克 编辑3 我真的很喜欢这个主意 按照迈克的建议实现了一个辅助类 public class NLog
  • PHP 电子邮件转垃圾邮件

    我正在尝试向新注册用户发送电子邮件以进行电子邮件验证 PHP 但我不明白 为什么电子邮件会被发送到垃圾邮件 我已经检查了类似的问题 所有答案都是关于标头的 对我来说了解这些标头以及它们是如何验证的似乎有点复杂 通过发件人网站 可以说我发送为
  • 如何在Android 2.0上读取联系人

    我正在开发 Android 2 0 并试图接收所有联系人的列表 Since android provider Contacts People已弃用 我必须使用android provider ContactsContract 但我找不到如何
  • PHP preg_replace 函数替换以前的匹配项

    我有一个相当基本的情况 我有一个字符串数组 我想在单个字符串中找到这些字符串的所有匹配项 并在它们周围放置强标签 这是我到目前为止所拥有的 searchWords array test this s for i 0 i
  • Bootstrap 4:对齐卡片组内的内容

    我的 Bootstrap 4 页面中有一副纸牌 我想对齐这些按钮以获得更好的外观 我们怎样才能做到这一点 Here is an image 这是演示 http 7freres com new http 7freres com new 这张桌
  • 在笔尖而不是故事板中制作单元原型

    为了更好的可重用性 我想在故事板之外创建一个表格视图 现在当我创建一个UITableViewXcode 中基于 ViewController 和 Nib 我在 nib 文件中获得默认的 TableView 但是 我无法在 Interface
  • 在 find -execdir 中从文件名中去除 ./

    整个故事 我正在编写一个脚本 将所有文件从一个目录链接到另一个目录 新文件名将包含原始目录名 我用find此时此刻与 execdir选项 这就是我想使用它的方式 linkPictures sh 2017 wien 2017 10 它将创建一
  • 如何在 NUnit 2.5 中使用 TestCase?

    我有一个Currency我使用 NHibernate 将其保存到数据库中 Currency类看起来像这样 public class Currency Entity public virtual string Code get set pub
  • 如何在调用strcpy之前分配数组?

    Given char test bla bla bla 两者哪个更正确 char test1 malloc strlen test strcpy test1 test or char test1 malloc sizeof test str
  • 一个具有不同返回类型的函数......可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public string FetchValueAsString string key public int FetchValueAsInteger string key public bool Fet
  • npm run 脚本中参数的 if-else

    我想调用不同的其他脚本 具体取决于是否给出参数 paramtest if z 1 then echo Foo 1 else echo Bar fi npm 运行参数测试 应该给 酒吧 npm run paramtest 无论如何 应该给出
  • 以编程方式从 Yahoo! 获取联系人地址簿[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何开始使用 MS-Build

    我希望开始使用 MS Build 到目前为止 我有很多手动构建的项目 从 Visual Studio 我想自动化构建过程 并且最好是在我不想安装 Visual Studio 的机器上进行 我开始在 MSDN 上阅读有关 MS Build 的