Как можно прочитать AssemblyFileVersion или ее компоненты AssemblyFileMajorVersion, AssemblyFileMinorVersion, AssemblyFileBuildNumber, AssemblyFileRevision, внутри .csproj после компиляции?
Я попробовал следующее, которое извлекает информацию из встроенной сборки:
<Target Name="AfterCompile">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="AssemblyVersion = %(MyAssemblyIdentities.Version)" />
</Target>
Но это возвращает AssemblyVersion, а не AssemblyFileVersion. Кажется, что нет документальной записи метаданных для последнего. Я также пробовал:
<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.ExtensionPack.tasks" />
<Target Name="AfterCompile">
<MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" NetAssembly="$(TargetPath)">
<Output TaskParameter="OutputItems" ItemName="Info" />
</MSBuild.ExtensionPack.Framework.Assembly>
<Message Text="AssemblyFileVersion = %(Info.FileVersion)" />
</Target>
К сожалению, пока это возвращает правильное значение, он также блокирует сборку файла до тех пор, пока VS2008 не будет закрыт.
Откровенно говоря, я не хочу этого, потому что я бы скорее прочитал информацию из AssemblyInfo.cs напрямую. Однако я не могу понять, как это сделать. Я предположил, что AssemblyInfo в расширениях MSBuild был одним из способов, но, похоже, он сфокусирован на записи в AssemblyInfo и не извлекает из него значения.
Как я могу это сделать?