【发布时间】:2024-01-21 02:19:01
【问题描述】:
我正在尝试让 MSBuild 生成一个带有版本号的文本文件,该版本号表示构建的创建时间。
现在在我的 MSBuild 任务中,我有以下内容:
<Target Name="WriteBuildDate" AfterTargets="Compile">
<WriteLinesToFile File="buildversion.txt" Lines="$([System.DateTime]::UtcNow.Year).$([System.DateTime]::UtcNow.Month).$([System.DateTime]::UtcNow.Day).$([System.Math]::Floor($([System.DateTime]::UtcNow.Subtract($([System.DateTime]::UtcNow.Date)).TotalSeconds)))" Overwrite="true" Encoding="Unicode" />
</Target>
这可行,但即使未重建所有程序集也会执行。这意味着,如果我对多台服务器使用 VS 发布功能,它们中的每台服务器的版本号都会略有不同,即使构建都相同。
是否有任何方法(没有自定义 msbuild 任务)仅在至少重建一个程序集时才执行此目标?
【问题讨论】:
-
查看*.com/questions/22542820/… 或*.com/questions/13972820/… 或明确指定依赖项,如
<Target Name="WriteBuildDate" AfterTargets="CopyFilesToOutputDirectory" Inputs="@(ReferencePath)" Outputs="buildversion.txt">(如果主可执行文件发生更改,则不会更新版本 - 不确定我是否从您的问题中理解正确?如果不是, 将 $(TargetPath) 添加到 Inputs)
标签: msbuild