如何将 TeamCity 构建版本获取到非托管 DLL 和 OCX 控件中?

2024-03-03

我有一个包含托管 (C#) 和非托管 (C++) 项目的 TeamCity 构建解决方案。是否有类似于 Assembly Info Patcher 的 TeamCity 实用程序,可以更改非托管 C++ DLL 和 OCX 项目的 .rc 文件中的版本号以匹配内部版本号?


这是我最终在 PowerShell 中完成的 StampVer 的替代方案,它在构建之前修改 .rc 文件。我对用足够的空间预填充版本字符串的 StampVer 约束感到不满意。

#################################################################
#
# Patch all of the given *.rc files and set
# the version strings for DLLs and OCX controls.
#
#################################################################


# Hand parse the arguments so we can separate them with spaces.
$files = @()

$previousArg = "__" 
foreach ($arg in $args)
{
    if ($previousArg -eq "-version")
    {
        $version = $arg
    }
    elseif ($previousArg -eq "__")
    {
    }
    else
    {
        $files += $arg
    }
    $previousArg = $arg
}

Function PatchRCFiles([string]$version, [string[]]$files)
{
    # check the version number
    if ( $version -match "[0-9]+.[0-9]+.[0-9]+.[0-9]+" )
    {
        echo "Patching all .rc files to version $version"

        # convert the version number to .rc format
        $rc_version = $version -replace "\.", ","
        $rc_version_spaced = $version -replace "\.", ", "

        # patch the files we found
        ForEach ($file In $files) 
        { 
            echo "Processing $file..."
            $content = (Get-Content $file)
            $content | 
            Foreach-Object {
                $_ -replace "^\s*FILEVERSION\s*[0-9]+,[0-9]+,[0-9]+,[0-9]+$", " FILEVERSION $rc_version" `
                   -replace "^\s*PRODUCTVERSION\s*[0-9]+,[0-9]+,[0-9]+,[0-9]+$", " PRODUCTVERSION $rc_version" `
                   -replace "(^\s*VALUE\s*`"FileVersion`",\s*)`"[0-9]+,\s*[0-9]+,\s*[0-9]+,\s*[0-9]+`"$", "`$1`"$rc_version_spaced`"" `
                   -replace "(^\s*VALUE\s*`"ProductVersion`",\s*)`"[0-9]+,\s*[0-9]+,\s*[0-9]+,\s*[0-9]+`"$", "`$1`"$rc_version_spaced`""
            }  | 
            Set-Content $file
          }
    }
    else
    {
        echo "The version must have four numbers separated by periods, e.g. 5.4.2.123"
    }
}

PatchRCFiles $version $files

TeamCity 中的配置如下所示:

只需为脚本提供您想要调整的 .rc 文件列表即可。此步骤必须在主要构建步骤之前运行。

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

如何将 TeamCity 构建版本获取到非托管 DLL 和 OCX 控件中? 的相关文章

  • 如何获取 TeamCity Build 触发器过滤器来构建功能分支而不是默认分支

    我创建了一个 Team City 构建来构建功能分支 默认分支 refs heads development 分支规范 refs heads feature 我有一个 vcs 触发器 因此它会为每次 git 推送而构建 但我不希望它在有人推
  • 强制 TeamCity 基于特定代理进行构建

    是否可以在不禁用所有其他连接的代理的情况下强制 TeamCity 在特定代理计算机上构建 Under Build Configuration Settings go to Agent Requirements并设置一个Explicit Re
  • 在列表中查找最新版本

    我可以在文件夹中搜索所有版本日志行 但我试图选择列表中的最新版本 但我不知道如何选择 因为列表的元素包含字符和数字 下面是我的代码 用于查找和创建一个名为matched lines的列表 其中包含所有说明日志版本号的行 我希望从创建的列表中
  • 如何确定完整的 CUDA 版本 + 颠覆版本?

    Linux 上的 CUDA 发行版曾经有一个名为version txt例如 CUDA Version 10 2 89 这非常有用 但是 从 CUDA 11 1 开始 该文件不再存在 我如何在 Linux 上通过命令行确定并检查 path t
  • 版本变更jquery错误

    大家好 我使用 asp 构建了一个 Web 应用程序 其中包含一点来自 bootstap 的 jquery boorstrap dropdown js 对于其他一些比我开发的项目版本更低的项目 我将版本从4更改为3 5 现在我收到错误 Mi
  • android可以在本机模式下从sd卡加载dll吗

    我想把我写的程序移植到android上 该程序是在 Windows 和 Linux 上用 C 编写的 该程序使用 dll 作为插件架构 通过下载程序从特定文件夹加载的 dll 可以将新插件添加到程序中 我的问题是 是否可以将为 androi
  • 如何在 Visual C++ 中创建 ActiveX DLL

    是否有在 Visual Studio 2008 C 中创建 ActiveX DLL 的教程 参考 我有一个使用 DLLRegisterServer UnregisterServer 构建的 DLL 并且已注册 但我在弄清楚使用什么名称来引用
  • Visual Studio 2013 设计器尝试加载错误版本的项目 DLL

    我的解决方案中有一个 Visual Studio 项目 它引用同一解决方案中的类库项目 该项目编译并执行得很好 但是 当我尝试在设计器中打开一个表单时 我收到一条消息 无法加载文件或程序集 MyLibName Version 1 0 547
  • 在 xhtml 页面中显示版本和构建日期

    我想在 JSF 应用程序的页脚上显示构建版本和构建日期 这些页面是 XHTML 我正在寻找从 pom xml 或其他工件获取信息的方法 我发现以下使用 maven replace 插件 http www vineetmanohar com
  • 如何制作包含DLL文件的JAR文件?

    我购买了一个第三方Java库 其中包括一个JAR文件和两个DLL文件 我编写了自己的 Java 程序来调用第三方 JAR 文件 现在我的问题是如何将我的所有代码打包到一个 JAR 文件中 其中包含我的所有代码以及第三方 JAR 和 DLL
  • 让 `npm install --save` 添加严格版本到 package.json

    当你跑步时npm install save somepackage 它通常会在 package json 中添加这样的内容 dependencies somepackage 2 1 0 因为版本前面带有插入符号 这意味着如果您稍后运行npm
  • 如何在 Github Action 中使用 Github 发布版本号

    我创建了一个 Github 存储库 其中包含构建 npm 包并将其发布到 npmjs com 的操作 我的行动的触发因素是在 Github 上创建一个新版本 创建新版本时 Github 要求我提供版本号 我很想在操作中使用这个版本号并将其提
  • C# 调用返回结构的 C++ DLL 函数

    我有一个 C dll 它定义了一个结构体和一个 dll 调用 如下所示 typedef const char FString typedef struct FString version FString build no FString b
  • 运行 Maven Surefire 测试插件 Java 11 时出错

    我正在使用 Maven Surefire 插件版本 2 22 1 在 Team City 中运行 Spring Boot 应用程序的一些测试 Spring Boot 版本是 2 1 2 我在配置中指定使用分叉的 Java 11 jvm 如下
  • AutoCAD 插件开发示例

    我对开发 AutoCAD 插件感兴趣 并试图了解几种不同类型的 AutoCAD 插件文件之间的关系 随 AutoCAD 插件一起提供的托管 DLL ARX 文件 https fileinfo com extension arx附带 Auto
  • 由于 MSVCR110.dll,MS Visual Studio 2012 Ultimate 无法启动

    当我尝试运行 MVS 2012 时 我总是收到错误 在库 DLL MSVCR110 dll 中找不到过程 crtCreateSymbolicLinkW 的入口点 我已经从我的另一台计算机复制了这个 dll 文件 一切正常 但没有帮助0 o
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • TeamCity 用户名/密码

    你好 我很久以前就在我的家用电脑上安装了 teamcity 我现在尝试再次重新使用它 但我忘记了管理员用户名和密码 是否有默认的管理员用户名 我怎样才能得到密码 Thank 在 TeamCity 8 中 您可以以超级用户身份登录并以这种方式
  • 为单个方法引用大 DLL

    我想在 C 中使用大型类库 dll 中的单个方法 是否有性能或其他方面的缺点 我应该使用反射工具 读取 方法代码并将其复制粘贴到我的项目中吗 更新 硬盘空间不是问题 我的应用程序是网络应用程序 是否有性能或其他方面的缺点 唯一真正重要的是可
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp

随机推荐