Я не могу найти информацию о том, как установить версию. Это , потому что версии файлов - это залог скомпилированных EXE и DLL , и у меня нет способа добавить управление версиями файлов в файлы сценариев?
Вы уже почти ответили на свой вопрос, вот именно! :)
FileVersionInfo.GetVersionInfo()
оборачивает вызов собственной функции API (version.dll!GetFileVersionInfo
).
Текущая версия API версии поддерживает широкий диапазон форматов файлов, при этом PE-файлы (.exe
, .dll
) являются очевидными.
Другие форматы, такие как элементы управления OLE (.ocx
), заставки (.scr
), драйверы (.drv
, .sys
), установщики (.msi
, .msu
) и ресурсы языкового пакета MUI (* 1025) *) может иметь встроенную информацию о версии, которая может быть проанализирована с использованием одной и той же библиотеки, поэтому это не просто исполняемых файлов.
С другой стороны, ваш .ps1
файл - это просто текстовый файл - операционная система не будет знать, где в ее содержимом искать и анализировать информацию о версии .
Для этого вам нужно либо прикрепить комментарий к последней строке файла и сохранить там версию, сохранить информацию о версии в имени файла, злоупотребить полем для ключевого слова справки на основе комментариев (например, .REMARKS
например), или сохраните его в альтернативном потоке данных (при условии, что все машины в вашей цепочке инструментов сборки / подписи работают с NTFS):
# write version info to an alternate data stream
Set-Content -Value "1.4.884.3" -Path script.ps1 -Stream myVersion
# read it back during build
$versionString = Get-Content script.ps1 -Stream myVersion