Как можно прочитать 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, а не на получении значений из него.
Как мне лучше всего это сделать?