GoRoS имел правильную идею, но он работает правильно только в первый раз.
Чтобы избежать этой проблемы, вы должны запустить этот код или аналогичный код в другом домене приложений, отличном от Агента сборки, Powershell и InvokeProcessActivity, чтобы решить нашу проблему.
GetAssemblyVersionNumber.ps1:
$error.clear()
if ($args.length -ne 1)
{
Write-Error "Usage: GetAssemblyVersionNumber.ps1 <Assembly>"
exit 1
}
# Now load the assembly
$assembly = [System.Reflection.Assembly]::Loadfile($args[0])
# Get name, version and display the results
$name = $assembly.GetName()
Write-Host $name.version
И в шаблон процесса сборки добавляется следующее
InvokeProcessActivity
Name: Call Powershell Version Script
Filename: "powershell.exe"
Arguments: "-NonInteractive -NoProfile -Command " _
+ "c:\Builds\GetAssemblyVersionNumber.ps1" _
+ " '" + BuildDirectory + "\Binaries\Foobar.dll'"
Handle Standard Output (stdOutput)
AssignActivity
To: VersionInfo
Value: stdOutput