从命令行构建时如何修改/替换选项集文件?

2023-12-22

我使用以下命令从批处理文件构建包:

msbuild ..\lib\Package.dproj /target:Build /p:config=%1

包的设置取决于选项集:

<Import Project="..\optionsets\COND_Defined.optset" Condition="'$(Base)'!='' And Exists('..\optionsets\COND_Defined.optset')"/>

此选项集定义了我的许多包所依赖的条件符号。该文件如下所示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <DCC_Define>CONDITION;$(DCC_Define)</DCC_Define>
    </PropertyGroup>
    <ProjectExtensions>
        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
        <Borland.ProjectType>OptionSet</Borland.ProjectType>
        <BorlandProject>
            <Delphi.Personality/>
        </BorlandProject>
        <ProjectFileVersion>12</ProjectFileVersion>
    </ProjectExtensions>
</Project>

现在我需要两种构建:一种定义了条件,另一种没有定义条件。我的攻击向量是选项集文件。我对该怎么做有一些想法:

  • 编写一个修改选项集文件的程序,在批量构建之前运行它
  • 摆弄项目文件并修改选项集路径以包含环境变量,然后在不同位置具有不同的选项集

但在开始重新发明轮子之前,我想问一下您将如何完成这项任务?也许已经有一些方法可以支持这种情况(比如某些命令行开关,我可以在 Delphi 或批处理文件魔法中配置的东西)。


我处理此问题的方法是定义多个构建配置,然后在构建时选择合适的配置/p:config=XXX。它在 IDE 中也能很好地工作,因为您只需双击项目管理器中的构建配置即可激活它。

当我这样做时,我个人使用构建配置的继承,这样我就不必重复自己。例如我有一个名为的构建配置Debug DCUs继承自Debug配置并简单地更改Debug DCUs选项True.

为了帮助解释我的意思,我的项目中的构建配置树如下所示:

The Debug DCUs配置通过此选项集实现:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <DCC_DebugDCUs>true</DCC_DebugDCUs>
    </PropertyGroup>
    <ProjectExtensions>
        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
        <Borland.ProjectType>OptionSet</Borland.ProjectType>
        <BorlandProject>
            <Delphi.Personality/>
        </BorlandProject>
        <ProjectFileVersion>12</ProjectFileVersion>
    </ProjectExtensions>
</Project>

现在,我确信您可以通过使用来做到这一点/p:DCC_Define=XXX但我认为使用构建配置更清晰,这样您就可以确保在 IDE 中获得的内容与从命令行构建中获得的内容相同。

我不会推荐您的要点列表中的任何一种方法。在我看来,这些方法极其脆弱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从命令行构建时如何修改/替换选项集文件? 的相关文章

  • 如何检查注册表项是否存在

    我不知道我的错误在哪里 它总是跳到else分支 但是密钥存在 我检查了几次 var reg TRegistry begin with TRegistry Create do try RootKey HKEY CURRENT USER Ope
  • 如何将纹理传递给 DirectX 9 像素着色器?

    我有像素着色器 fxc exe tiles fs T ps 3 0 Fotiles fsc Fctiles fsl struct PSInput float4 Pos TEXCOORD0 float3 Normal TEXCOORD1 fl
  • EOutOfMemory 使用 Delphi 创建大型 XML

    我正在使用 Delphi 从关系数据库中的数据创建 XML 文档 它在小数据集上测试得很好 但是当我尝试将数据集的大小扩展到生产级别时 它最终在节点创建期间因 EOutOfMemory 异常而崩溃 我正在使用放在表单上的 TXMLDocum
  • 所见即所得与 Unicode

    我在 Delphi 中编写了一个 Windows 程序 该程序使用 GetCharWidth 和 Em Square 将文本非常精确地放置并换行到屏幕和打印机 这对于 ANSI 文本效果很好 您只需要检索和计算 255 个字符的宽度 但当您
  • 创建部署时将 pod-template-hash 添加到副本集名称中的确切原因是什么?

    https kubernetes io docs concepts workloads controllers deployment creating a deployment https kubernetes io docs concep
  • 从创建 UI 的同一线程更新 VCL。为什么?

    我知道我必须调用 Synchronize 来从未创建控件或向窗口发送消息的线程更新 vcl 我经常听到 线程不安全 这个词 但我找不到关于正在发生的事情的实际解释 我知道应用程序可能会因访问冲突而崩溃 但我又不知道为什么 请阐明这个主题 V
  • 将delphi stringgrid导出到excel

    我正在尝试将数据从delphi 7 中的stringgrid 导出到microsoft excel 我一直在使用这段代码来做到这一点 objExcel TExcelApplication Create nil objExcel Visibl
  • 如何在 Surface 上测试 Windows8 应用程序

    如何将我构建的 Windows8 应用程序移植到 Surface 上 我已经使用 Visual Studio 构建了该应用程序 只需按 F5 即可在桌面计算机上对其进行良好的测试 如何将其放到 Surface 上进行测试 而无需将其发布到商
  • 无法使用 Indy 从 Gmail 获取电子邮件

    I use TIdPOP3很多 而且效果很好 除了 GMail 帐户 不知怎的 它永远不起作用 我尝试了不同的组合和端口 无论是否使用 SSL 它总是返回不同的错误 我最近的尝试是在 Gmail 上创建 应用程序特定 密码 并尝试使用此密码
  • 如何使用 Delphi 播放单音或自定义波形?

    我查了一些代码 似乎一切都在创建一些数学函数波 但我想要一个单音 或者用自定义单音制作的自定义波 我读了这个如何生成不同频率的连续音调 https stackoverflow com questions 7742377 how can i
  • 使用 uWSGI 部署 Pylon

    我们正在尝试将我们的内联网迁移到 Pylons 我的老板正在尝试设置 Pylons 以在 Apache 后面使用 uWSGI 以便他可以设置多个独立的应用程序 然而 他在设置方面遇到了困难 uWSGI 的 C 源代码中存在一些明显的代码问题
  • 如何隐藏主窗体而不是关闭它?

    如果用户点击X在我的主窗体上 我希望窗体隐藏 而不是关闭 这听起来像是一份工作OnClose表单事件 http docs embarcadero com products rad studio delphiAndcpp2009 HelpUp
  • Delphi TTask - PPL 中匿名函数中的变量捕获如何工作?

    我开始深入研究 Delphi D11 PPL 并编写了这个小例子 procedure TForm2 LaunchTasks const cmax 5 Var ltask ITask i j Integer begin for i 1 to
  • 如何在 iOS 和 Android 上获取应用程序恢复状态?

    当应用程序恢复时 是否可以从代码角度检查某些内容iOS and Android 例如当应用程序最小化并恢复时 应用程序仍在设备后台运行 你需要使用IFMX应用程序事件服务 http docwiki embarcadero com Libra
  • 在这些情况下限制破折号的正则表达式模式

    Scenario 我正在使用第三方文件重命名软件 该软件是用 Delphi 编写的 并且具有 pascal 脚本支持 该应用程序允许使用正则表达式来重命名文件 这意味着 如果我需要对文件名执行的操作不能仅使用一个正则表达式来完成 那么我可以
  • 无法部署到 docker - 加密失败并且找不到 Rust 编译器

    我正在尝试在 docker 上部署新版本 但遇到了以前从未见过的错误 我按照步骤安装加密并升级 pip 但这不起作用 如果有人知道如何解决此问题 请告诉我 谢谢你 error Can not find Rust compiler Comma
  • Angular 2 CLI - 部署

    我使用 Angular 2 CLI 构建了 Angular 2 应用程序 我现在的问题是我想将应用程序部署到本地服务器作为暂存环境以供其他人查看 大多数使用 Angular 2 CLI 的教程都展示了dist该文件夹似乎是在首次使用 CLI
  • Delphi 生成的 Dylib 在 OSX 上的可靠部署

    我想在 OSX 上部署一个 dylib 它是用 Delphi 创建的 这个 dylib 应该是可由第三方应用程序加载 这看起来像是一个重复的问题 但经过大量搜索后 我找不到答案 这和这个是同一个问题 https forums embarca
  • AppHarbor 一步构建以及如何部署我的数据库[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我终于达到了我的解决方案完成构建步骤
  • AKKA-http 部署

    这是我第一次使用 akka http 我编写了以下启动应用程序的主类 object Main extends App with Routes with Config with Protocols implicit val system Ac

随机推荐

  • 如何在 R 中的字符串中的每个单词周围添加引号?

    我有一个字符串 words lt Monday Tuesday Wednesday Thursday Friday 我只需要为每个单词添加引号 Monday Tuesday Wednesday Thursday Friday 得到长度为 5
  • 以编程方式检查 gem 是否在捆绑包中?

    在运行时 捆绑器设置完成后 并且groups http bundler io v1 7 groups html应用后 以编程方式检查给定值是否有效的最佳方法是什么 gem name是在捆绑包中吗 通过阅读源码 我发现Bundler defi
  • 在查询结果上加入列表时出现 Linq 异常

    我有一个清单 List
  • 使用openMP并行获取最小元素索引

    我尝试编写这段代码 float theArray the array to find the minimum value int index i float thisValue min index 0 min theArray 0 prag
  • 从java应用程序下载文件

    您好 我需要一些帮助才能从我的 java 应用程序下载文件 URL 为 http my site com UICFEWebroot QueryOneDateAllCur lang ita rate 0 initDay 11 initMont
  • 在 C++ 中创建一个大数组[重复]

    这个问题在这里已经有答案了 可能的重复 大数组上的分段错误 https stackoverflow com questions 1847789 segmentation fault on large array sizes Hi all 我
  • 序列化表单子组以进行 Ajax 提交到 ASP.NET MVC

    我正在创建一个应用程序 可以在其中创建注释 并且可以将一对多零件添加到注释中 该应用程序适用于客户要求拖拉机零件的拖拉机报废场 我正在使用 Jquery AJAX 通过创建视图加载弹出模式 我正在创建一个注释 其各个部分位于一个创建视图中
  • 如何设置 TFS2010 以使用 Jenkins 构建服务器

    我们使用 Jenkins 作为 CI 构建服务器 但已转移到 TFS 来完成所有项目管理工作 用户故事 开发任务 测试用例 报告 自动化 如何设置 TFS2010 以使用我们的 Jenkins 构建服务器 实际上更像是相反的情况 您需要为
  • iPhone - UITableViewCell 高度变化的平滑动画,包括内容更新[重复]

    这个问题在这里已经有答案了 可能的重复 当 UITableViewCell 被选中时 你能用动画来改变高度吗 https stackoverflow com questions 460014 can you animate a height
  • C# 归并排序性能

    只是简单说明一下 这不是家庭作业 我只是想温习我的算法 我正在使用 C 中的 MergeSort 并且编写了一个可以基于泛型进行排序的递归方法 class SortAlgorithms public T MergeSort
  • .NET WinForms - 如何监听系统注销、用户锁定、休眠启动和系统恢复的事件?

    我想监听 Windows Forms NET 应用程序中的以下系统范围事件 注销 锁窗户 休眠启动 睡眠开始 系统已恢复 这些可能吗 Thanks 您需要查看 WMI Windows 媒体工具 您需要为上述事件创建事件观察者 http ms
  • 将值放在直方图的箱的中心

    我有以下代码来绘制直方图 中的值time new是发生某事的时间 time new 9 23 19 9 1 2 19 5 4 20 23 10 20 5 21 17 4 13 8 13 6 19 9 14 9 10 23 19 23 20
  • 单击时关闭对话框(任何地方)

    是否有默认选项可以通过单击屏幕上的某处而不是关闭图标来关闭 jQuery 对话框 编辑 这是我编写的一个插件 它扩展了 jQuery UI 对话框以包括 单击外部时关闭以及其他功能 https github com jasonday jQu
  • 会话超时不起作用+ cakephp

    我想将会话超时增加到 24 小时左右 为此我在网上进行了搜索 但没有任何帮助 目前 我的网站在该会话到期后将会话时间设置为大约 40 分钟 我想将其设置为 24 小时 在我的 core php 中我添加了这些行 Configure writ
  • Azure 内存资源耗尽

    我目前在 Azure 中托管了几十个网站 最近开始在每个 Web 应用程序的门户刀片中看到 内存资源耗尽 警告 我在两个 S3 标准 大型 应用程序服务计划中托管我的网站 我在所有网站上都会收到警告 无论它们使用哪个应用程序服务计划 有趣的
  • 如何在 4.0+ 上更改 Edittext 下划线的颜色?

    我的应用程序 Theme Holo 有 但我想更改 edittext 下划线边框的颜色 我不想在编辑文本周围有完整的边框 我只想更改 4 0 版本上 edittext 布局的颜色 我怎样才能做到这一点 你可以使用9patch 这个资源是一个
  • 如何处理二进制文件格式的可移植性问题

    我正在设计一种二进制文件格式来存储字符串 不终止 null 以节省空间 和二进制数据 我 处理小 大端系统的最佳方法是什么 i a 使用 ntohl htonl 将所有内容转换为网络字节顺序并返回是否有效 二 打包结构在 x86 x64 和
  • 为什么我的多索引数据框有重复的索引值?

    我有以下名为 df 的 pd DataFrame date cluster label value 0 2018 11 14 02 16 22 0 1 5 1 2018 11 14 02 16 22 0 7 0 2 2018 11 14 0
  • 在php中邮寄之前确认消息

    我正在开发一个网站 其中会将数据库中的名称列为链接 我已经达到这样的程度 当一个用户单击该名称时 它将将该名称的详细信息传递到另一个页面以查看电子邮件格式等 我只需要有关如何执行此操作的建议 因为我不是php 专家 我还在研究更高级的代码
  • 从命令行构建时如何修改/替换选项集文件?

    我使用以下命令从批处理文件构建包 msbuild lib Package dproj target Build p config 1 包的设置取决于选项集