Cómo especificar la ubicación del archivo de solución para los archivos de información de ensamblaje de versiones en MSBUILD
-
26-12-2019 - |
Pregunta
He estado jugando con esto por un día, pero no tengo suerte. El versionamiento de la asamblea con MSBUILD se utiliza para trabajar antes, pero recientemente hemos trasladado los archivos de solución a una carpeta separada dentro de la raíz del proyecto, y desde entonces la versión no ha estado funcionando.
a continuación es la estructura del proyecto
carpeta de código
-> PROTECA FOLDER
-> Carpeta ProjectB
-> Carpeta ProjectC
-> Carpeta de soluciones
* anteriormente, los archivos Soluciones (.SLN) estaban debajo de la carpeta de códigos.
Cuando ejecutamos el MSBUILD, obtengo la siguiente advertencia.
No se proporcionaron archivos de información de ensamblaje
A continuación se muestra una versión reducida del registro de compilación.
Eliminar espacio de trabajo
00:00 Eliminar directorio de fuentes
00:00 Crear espacio de trabajo
01:14 Obtener espacio de trabajo
00:00 Assemblies de versiones
00:00 versión de ensamblaje de ensamblaje y ensamblador Procesamiento: usando patrones de número de versión incluidos en la definición de compilación
00:00 Establecer todos los valores de la propiedad de ensamblaje (B) Asambleas de versiones con Los siguientes patrones: ensamblaje (1.0.0.0) y Fileversión de montaje (yyyy.mm.dd.b) Sin archivos de información de ensamblaje fueron proporcionado
A continuación se muestra la tarea MSBUILD que produce el registro anterior.
<local:VersionAssemblyInfoFiles
AssemblyFileVersionPattern="[AssemblyFileVersionPattern]"
AssemblyInfoFilePattern=" AssemblyInfoFilePattern]"
AssemblyVersionPattern="[AssemblyVersionPattern]"
BuildDirectory="[BuildDirectory]" BuildNumberPrefix="
[BuildNumberPrefix]" BuildSettings="[BuildSettings]"
DisplayName="Versioning Assemblies"
DoCheckinAssemblyInfoFiles="[DoCheckinAssemblyInfoFiles]"
ForceCreateVersion="[ForceCreateVersion]"
sap:VirtualizedContainerService.HintSize="200,22"
mva:VisualBasic.Settings="Assembly references and imported namespaces
serialized as XML namespaces" UseVersionSeedFile="[UseVersionSeedFile]"
VersionSeedFilePath="[VersionSeedFilePath]" Workspace="[Workspace]"
xmlns:local="clr-namespace:TfsBuild.Versioning.Activities;
assembly=TfsBuild.Versioning.Activities">
<sap:WorkflowViewStateService.ViewState>
<scg:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="ShouldCollapseAll">False</x:Boolean>
<x:Boolean x:Key="ShouldExpandAll">True</x:Boolean>
</scg:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</local:VersionAssemblyInfoFiles>
También miré la solución sugerida aquí pero no tengo suerte. ¿Puede alguien apuntarme a la dirección correcta? No soy un experto en Msbuild.
gracias de antemano.
Solución
Terminé haciendo la siguiente solución. No tenemos una opción para mover todas las soluciones al nivel de raíz del proyecto.
a. Crea una nueva solución i.e SomeApp.lib.Versioning.SLN Esta solución viviría bajo la carpeta raíz y solo se usa para versionar el resto de los proyectos.
b. El proyecto (.csproj) para el Someapp.lib.versioning.sln viviría en el mismo nivel que el resto de los proyectos.
Entonces la nueva estructura es
carpeta de código
-> PROTECA FOLDER
-> Carpeta ProjectB
-> Carpeta ProjectC
-> Carpeta de soluciones
-> someapp.lib.versioning.sln
-> Carpeta SOMEAPP.LIB.VERSIONING
c. Ahora realizo referencia al Someapp.lib.VERSIONING.PROJ de una de las soluciones dentro de la carpeta Soluciones. Esto significa SomeApp.lib.versioning.proj tiene dos soluciones adjuntas a HIT.
d. El proyecto que muestre la versión de compilación usaría el archivo tipo I.E de clase desde el SOMEAPP.LIB.VERSIONING.PROJ
Según la versión de construcción estándar SomeApp.lib.versioning.proj tendría la versión de compilación correcta (SomeApp.lib.VERSIONING.SLN está en el nivel raíz)
Observaciones: Esto es solo un trabajo y no una solución ideal. Esto no se verá todas las asambleas en el proyecto. Por ejemplo, si queremos saber qué ensamblaje se construyó en qué versión, esto no va a funcionar. Es solo el titular del lugar para obtener la versión de compilación de la solución.