¿Cómo se puede leer la AssemblyFileVersion, o sus componentes AssemblyFileMajorVersion, AssemblyFileMinorVersion, AssemblyFileBuildNumber, AssemblyFileRevision, dentro del .csproj, tras la compilación?Leer AssemblyFileVersion de AssemblyInfo post-compilar
me han tratado los siguientes elementos que tira de la información del conjunto de construcción:
<Target Name="AfterCompile">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<Message Text="AssemblyVersion = %(MyAssemblyIdentities.Version)" />
</Target>
Pero que recupera la AssemblyVersion y no AssemblyFileVersion. No parece haber una entrada de metadatos documentada para este último. También probé:
<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>
Lamentablemente, si bien esta recupera el valor correcto, sino que también el archivo cerraduras el conjunto hasta que VS2008 está cerrado.
Francamente, tampoco es lo que quiero ya que preferiría leer la información de AssemblyInfo.cs directamente. Sin embargo, no puedo encontrar la manera de hacerlo. Supuse que AssemblyInfo en MSBuild Extensions era de una sola manera, pero parece enfocado en escribir en AssemblyInfo y no recuperar valores de él.
¿Cómo puedo lograr esto?
+1 simplemente por preguntar "¿Cómo lo leo?" En lugar de lo que siempre encuentras: Cómo actualizar la información de la versión. – Yoopergeek
Como han pasado dos meses desde que pregunté esto y la única respuesta utilizable es la mía, la aceptaré. Sigo pensando que puede haber una mejor manera. – Gregyski
@Yoopergeek: De hecho, hay varios métodos para escribir, pero la lectura fue difícil incluso después de una gran cantidad de investigaciones. Mi respuesta a continuación, sin embargo, funciona bien. – Gregyski