Actualmente estoy trabajando en un proyecto de ASP.NET con varios desarrolladores que usan Subversion para la distribución de código, pero francamente está completamente desordenado en este momento. La persona que configuró el repositorio de Subversion ha incluido archivos de configuración específicos para su computadora, directorios bin \ * y otras cosas similares.¿Mejores prácticas para almacenar un sitio web ASP.NET en Subversion?
Yo, siendo el tipo que tiene que consultar este repositorio y hacer que funcione en mi computadora, estoy bastante frustrado por esto, ya que me tomó un tiempo ordenarlo todo para compilarlo en absoluto. Ahora estoy pensando en escribir un documento con las directrices de Subversion para enviarlo al líder técnico de mi empresa para que podamos estandarizar el proceso y evitar este tipo de problemas.
Lo que estoy buscando es información sobre las pautas. Aquí está el comienzo para ellos, y con suerte podemos hacer algo bueno con esto:
La estructura del archivo debe configurarse para tener las bibliotecas de terceros registradas fuera de los directorios de salida de compilación (ya que no serán incluido en el repositorio.) El nombre de este directorio debería ser "Bibliotecas".
No se deben incluir archivos específicos de la máquina en Subversion. Por lo tanto, solo se registra una plantilla de Web.config, que los desarrolladores adaptan para adaptarla a su máquina. Este comportamiento se incluye en Visual Studio 2010 de forma predeterminada y los archivos de configuración individuales (
Web.Local.config
) tienen automáticamente aplicada la plantilla (Web.config
). Sin embargo, el archivo de configuración local aún no debería incluirse en Subversion, siempre que se aplique a una máquina específica.Los archivos de solución y de proyecto no deben contener ninguna ruta de acceso absoluta.
Se debe configurar una lista de ignorar. Inicio con:
' *.user obj '
Ejemplo estructura de archivos para un sitio web de ASP.NET 2.0 con una biblioteca de clases específicas para el sitio web y una biblioteca de terceros:
' /trunk/ Libraries/ ThirdParty.dll MyClassLibrary/ bin/ [Ignore] obj/ [Ignore] Properties/ AssemblyInfo.cs SomeClass.cs MyClassLibrary.csproj - Holds references to third-party libraries. For example: ../Libraries/ThirdParty.dll MyWebApplication/ bin/ ThirdParty.dll [Ignore; copied by build process] ThirdParty.dll.refresh - Contains "../Libraries/ThirdParty.dll" Default.aspx Default.aspx.cs Web.config [Ignore] Web.config.template MySolution.sln - Holds list of projects. - Has reference information for projects. '
Una alternativa al uso
Web.config.template
haría Incluya un archivoLocal.config
deWeb.config
, pero esto podría ser menos flexible.Al utilizar un proyecto de aplicación web en lugar de un proyecto de sitio web, las referencias se almacenarán en el archivo de proyecto en lugar de archivos .refresco, por lo que se ignorará la carpeta/bin.
¿Alguien puede ver los errores en las sugerencias anteriores? ¿Algo falta? ¿Alguien tiene sugerencias para la lista de ignorar? Empecé con un par de entradas por ahora.
Para proyectos web 2.0 referencias de ensamblado externos están determinados por el/bin/solos , entonces necesito (AFAIK) que los archivos .refresh estén en el directorio/bin /. Es posible hacer que SVN ignore bin/*. Dll, así que esto no debería ser un problema. Mi intención nunca fue incluir resultados de compilación en SVN, eso es exactamente lo que pretenden evitar estas directrices. De hecho, escribí mis directrices para importar un archivo "Local.config" inicialmente, pero dado que hay tantas secciones en un archivo de configuración, pensé que sería mejor tener una copia del archivo que el desarrollador puede configurar . – Blixt
Ahhh - Olvidé esos proyectos de 2.0 "sitio web" sin un archivo de proyecto. Nunca me gustaron. Pero tiene una opción (la aplicación web se reintrodujo en VS2005 SP1). Si crea un "sitio web", no tiene ningún archivo de proyecto, y el directorio bin lo convierte en referencias, o puede crear una "aplicación web" donde las referencias están definidas por un archivo de proyecto, y luego puede ignorar todo el contenedor carpeta. Pero no tengo mucha experiencia en colocar un proyecto de "sitio web" en svn. – Pete
Pete, también puede colocar sus cadenas de conexión en un archivo de configuración separado (a menos que siga usando .NET 1.1). Simplemente use ' '. –