Pregunta Proyectos C #, control de versiones adecuado, empresa, etc. en implementación


Mi compañía está trabajando para mover nuestro desarrollo de C ++. Net a C #. Nuestro producto tiene una versión mensual estándar (por ejemplo, 5.0.19.2 ...).

En C ++. Net, teníamos un archivo app.rc común, que estandarizaba la información de la empresa, así como el número de versión. Como cada proyecto dentro de la solución incluiría el mismo archivo app.rc una vez, fue muy fácil cambiar la información de la versión en más de 200 proyectos.

¿Cómo se traduce esta solución en el mundo C #? Las preguntas que verifiqué antes de escribir esto lo menciono a través de la ventana de propiedades en el explorador de soluciones, pero eso no es lo que quiero.

Sé que assemblyinfo.cs contiene la información que quiero modificar, pero no pensar Podría tener un archivo maestro. ¿Debo dividirlo en varios archivos?

¡Gracias por adelantado!


12
2017-07-19 19:37


origen


Respuestas:


Puede agregar un archivo como un enlace en lugar del archivo real. Por ejemplo, mi solución podría ser:

Solution
    - My Project
        - Properties
            - AssemblyInfo.cs
            - SharedAssemblyInfo.cs (Linked)
    - Solution Items
        - SharedAssemblyInfo.cs

Cuando agrega un elemento existente a la solución, puede usar la flecha desplegable en el Add enlace y seleccione Add as Link. los SharedAssemblyInfo.cs el archivo puede contener atributos de ensamblado común / compartido, p. ej .:

[assembly: AssemblyVersion("2.0.*")]
[assembly: AssemblyFileVersion("2.0.0.0")]

[assembly: AssemblyCompany("My Company")]

... etc. El proyecto local puede contener atributos específicos del proyecto:

[assembly: AssemblyTitle("My Assembly")]

... etc.


14
2017-07-19 19:44



Es una práctica común en las soluciones de c # comentar la información de la versión en assemblyinfo.cs de cada proyecto y luego tener una sola "shared_assemblyinfo.cs" común (nombrada a gusto) que contiene información de la versión y se comparte en todos los proyectos ...


6
2017-07-19 19:41



Puede tener un archivo de información de conjunto y solo especificar la versión de conjunto en él:

using System;
using System.Reflection;

[assembly: AssemblyVersion("1.0.0.0")]

Entonces, solo agrega el archivo como un enlace a cada uno de sus otros proyectos (tendrá que eliminar el atributo AssemblyVersion de cada uno de los Properties\AssemblyInfo.cs archivos a mano). Cuando compilan, todos usarán este archivo.


6
2017-07-19 19:42



Un master assembly.cs es posible: simplemente elimine el archivo assembly.cs de su proyecto y vuelva a agregar un assembly.cs maestro a cada proyecto con la opción "Como enlace" en el cuadro de diálogo "Agregar archivo".

http://www.tigraine.at/2009/01/22/sharing-a-common-assemblyinfo-between-projects-in-a-solution/


4
2017-07-19 19:44



Sugeriría tener información de la versión para cada proyecto, considerando que son 400 o podrían ser tan grandes, es extremadamente importante saber en cada nueva configuración grande qué versiones de ensamblajes forman parte de esa configuración. Cada conjunto desarrollado por diferentes personas como proyectos separados y finalmente terminaron en un gran mosaico de su aplicación principal, con su versión principal.

Saludos.


0
2017-07-19 19:49