【发布时间】:2019-08-27 01:53:15
【问题描述】:
我希望在我的项目中定义一个位置来存储版本字符串。我正在寻找的行为是将版本存储在项目目录中的文本文件 (version.txt) 中,然后我的预构建事件更新 Properties/AssemblyInfo.cs 中的内容。
[assembly: AssemblyVersion("<Version>")]
[assembly: AssemblyFileVersion("<Version>")]
是的,我知道只有两个字段并且它们彼此相邻,但我仍然想知道这是否可能。
我编写并测试了执行此功能的 Powershell 脚本。
$assemblyInfoPath = "Properties\AssemblyInfo.cs"
$versionText = (Get-Content -Path version.txt -ReadCount 0)
$assemblyInfoText = (Get-Content -Path $assemblyInfoPath -ReadCount 0)
$assemblyInfoText = $assemblyInfoText -replace '\[assembly: AssemblyVersion\("((\d)+|(\.))*"\)\]', "[assembly: AssemblyVersion(`"$versionText`")]"
$assemblyInfoText -replace '\[assembly: AssemblyFileVersion\("((\d)+|(\.))*"\)\]', "[assembly: AssemblyFileVersion(`"$versionText`")]" | Set-Content -Path $assemblyInfoPath
失败(我认为)是预构建步骤中的调用:
预构建事件命令行:
powershell $(ProjectDir)set_assembly_version.ps1
我没有尝试使用 msbuild 运行它,只通过 Visual Studio 2017 运行。这是否可能,因为 AssemblyInfo.cs 是一个项目文件?
【问题讨论】:
-
在构建过程中更改源代码并不是最好的主意……但是您尝试做的应该可以。将构建日志级别(选项->构建和运行)设置为详细(或诊断)并仔细阅读日志...
标签: c# visual-studio msbuild .net-assembly assemblyinfo