在 MSBuild .targets 文件中获取时间作为 linuxtime

问题描述 投票:0回答:1

我正在尝试注入一个数字 Linux 时间值(即自 Linux 纪元开始以来的秒数),用于在 C++ 项目中将构建作为预处理器定义进行构建。下面的代码适用于

BUILD_YEAR
,但对于
BUILD_DATETIME
我收到一条错误,提示
Subtract
要么不存在,要么是静态的,这两者似乎都不正确。这是错误的做法吗?它似乎是有效的 C#,但我找不到目标文件实际支持的语言的任何文档。

我知道有一些方法可以将

__TIME__
处理为数值,但这似乎应该是更合适的方法。

无效的静态方法调用语法:“.Subtract([System.DateTime]::UnixEpoch).TotalSeconds”。未找到方法“System.DateTime.Subtract”。静态方法调用应采用以下形式:$([FullTypeName]::Method()),例如$([System.IO.Path]::Combine(

a
,
b
)).检查所有参数是否已定义、类型是否正确以及是否以正确的顺序指定。

<Project ToolsVersion="16.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>  
        <!-- All Builds -->
        <BUILD_YEAR>$([System.DateTime]::Now.ToString("yyyy"))</BUILD_YEAR>
        <BUILD_DATETIME>$([System.DateTime]::Now.Subtract([System.DateTime]::UnixEpoch).TotalSeconds)</BUILD_DATETIME>
    </PropertyGroup>

    <ItemGroup>
        <!-- Note: This will ultimately come from the same path as Version.rc -->
        <ClCompile">
<PreprocessorDefinitions>BUILD_YEAR="$(BUILD_YEAR)";BUILD_DATETIME=$(BUILD_DATETIME);%(PreprocessorDefinitions)</PreprocessorDefinitions>
        </ClCompile>
    </ItemGroup>
</Project>
visual-studio msbuild
1个回答
0
投票
    <PropertyGroup>  
        <!-- All Builds -->
        <BUILD_YEAR>$([System.DateTime]::Now.ToString("yyyy"))</BUILD_YEAR>
        <BUILD_DATETIME>$([System.DateTime]::Now.Subtract($([System.DateTime]::UnixEpoch)).TotalSeconds)</BUILD_DATETIME>
    </PropertyGroup>

嵌套属性函数需要包含在其自己的

$()
中。

请参阅 MSBuild 文档中的嵌套属性函数

© www.soinside.com 2019 - 2024. All rights reserved.