2011-12-21 10 views
9

Tengo un problema que pensé que podría ser común, busqué en la web pero no encontré nada.IIS Express en una máquina de desarrollo compartido (rdp)

Estamos utilizando una máquina de desarrollo compartido, y todos los desarrolladores se conecta a través de RDP y tiene su propio perfil, escritorio, etc.

El problema que estoy encontrando es con IIS Express. Dado que está configurado a nivel de usuario (applicationhost.config dentro de documentos/iisexpress/config) y el puerto configurado debe coincidir con el declarado en el archivo .csproj, dos desarrolladores no pueden ejecutarse en el mismo puerto, ya que da el error "el puerto ya está en uso".

Para que funcione, tenemos que cambiar manualmente el puerto tanto en csproj como en applicationhost.config para cada desarrollador, pero es solo una solución temporal ya que cuando confirmamos nuestros cambios a SVN, el archivo csproj se fusiona , entonces tenemos que hacer este proceso cada vez que alguien se comprometa/actualice.

Mi pregunta es: ¿hay una forma clara de usar IIS express con Visual Studio 2010 en una máquina de desarrollo compartido?

Gracias.

+1

estaría utilizando el servidor de Visual Studio Desarrollo con puertos Autoasignado ser una opción o es necesario utilizar IIS Express por una razón específica? – Filburt

+0

Intentaríamos hacer que IIS funcione expresamente, ya que lee los valores de configuración de IIS declarados en web.config, mientras que Cassini no lo hace. Sé que Cassini con puertos automáticos funciona, solo queremos encontrar una forma correcta de usar IIS express. –

+0

FYI, IIS Express será el predeterminado en la próxima versión de Visual Studio. No estoy seguro de que Cassini esté disponible. –

Respuesta

10

Parcialmente probado la respuesta. No estoy seguro de cómo funcionará en una estación de trabajo multiusuario. Podría brindarle a usted, oa alguien más aquí, un impulso a una solución adecuada que funcione mejor en su entorno actual.

Parece que Visual Studio almacena toda la configuración web en csproj/vbproj e IISExpress almacena su configuración en% userprofile% \ Documents \ IISExpress \ config \ ApplicationHost.Config.

Normalmente, almacenamos los archivos csproj en control de fuente, pero ignoramos el archivo csproj.user para que cada persona tenga algunas configuraciones únicas, como la configuración web.

  • Cada usuario que inicia sesión en el cuadro debe tener su propio perfil.
  • Cada perfil debe tener su propia copia del código fuente.
    • Cada copia de la fuente del usuario contendrá su propio archivo csproj.user.
  • Ignorar. ** archivos proj.user * en el control de origen.

Copiar la configuración web en el csproj.user desmarcando la opción de configuración del servidor Aplicar a todos los usuarios y luego comprometerse a control de código fuente. unchecking the option Apply server settings to all users

Cada usuario que saca una copia de la fuente tendrá que ajustar su configuración web, utilice un puerto único que los demás usuarios no están utilizando, y desactive el cuadro de arriba para que su configuración no se transmite a la otros usuarios.

Al hacer esto, cada perfil tendrá su propia IIS Express ApplicationHost.Config configurada con un puerto que es diferente de los otros perfiles. Cada copia de la fuente del usuario tendrá un csproj.user configurado con el mismo puerto en la configuración de IIS Express de su perfil.

Como referencia:

He intentado cambiar ApplicationHost.config de IIS Express para utilizar un puerto diferente a lo que espera de Visual Studio y Visual Studio no se puede conectar al depurador que IIS Express.

¿Cómo funciona la configuración de IIS Express: http://msdn.microsoft.com/en-us/library/ms178109.aspx

+0

Tan simple, pero tan increíble. Gracias. Eso funciona, y es la solución más limpia al enfoque "rdp" que tenemos. –

+0

¿Alguien ha intentado esta solución con Visual Studio 2013? Parece que se ha eliminado la casilla de verificación "Aplicar configuración de servidor a todos los usuarios", por lo que no puedo hacer esto. Tengo este mismo problema. –

+0

No me he revisado, pero parece que está de regreso en VS2013 Update1. Aquí está el ticket de Connect: https://connect.microsoft.com/VisualStudio/feedback/details/800003/the-apply-server-settings-to-all-users-store-in-project-file-option-is-missing -en-vs2013 –

0

La mejor opción que puede utilizar es aprovechar el Import functionality integrado en MSBuild.

Esencialmente, crearía un objetivo de compilación separado para cada usuario. A continuación, puede importar este objetivo desde este archivo al que se hace referencia directamente. Entonces recomendaría crear este archivo en el servidor (para cada usuario), pero dejándolo fuera del control de la fuente.

Esto debería permitir a cada usuario tener un puerto IIS personalizado sin entrar en conflicto con otros.

+0

¿Eso significaría hacer un objetivo diferente por usuario una vez, o para cada proyecto? Porque si se trata de una solución, podría ser interesante, pero si necesita repetirse para cada proyecto, podría convertirse en un desastre. –

+0

Aún no lo he probado directamente, pero debería serlo por una sola vez.Como estaría importando un subconjunto del archivo de configuración solo relacionado con la configuración de IIS. (aunque la línea de importaciones debería agregarse por proyecto una vez, pero podría hacer referencia al mismo archivo) –

-1

Creo que puede crear subdominios para cada usuario e implementar los cambios necesarios y hacer las pruebas. De esta forma, cada usuario puede tener su propio subdominio y puerto y, por lo tanto, trabajar independientemente en el IIS Express compartido.

+0

una solución desordenada, mala para múltiples proyectos. –

-2

Es probable que no va a gustar mi respuesta, pero aquí están mis pensamientos:

Como habrá notado, las configuraciones están vinculados al perfil del usuario y no del servidor; esto se debe a que IIS Express no está destinado a ser utilizado como un servidor de desarrollo compartido. Debería usar IIS completo.

No veo ningún beneficio o razón para usar la misma caja física para el desarrollo. Es cierto que no conozco todos los detalles de su escenario con licencias o recursos de estaciones de trabajo, pero no parece que gane mucho con tener a todos los RDP en la caja para usar Visual Studio: cada persona aún necesita una licencia, el rendimiento ser más lento, y no debería estar trabajando en la misma instancia del proyecto.

Usted debería considerar seriamente toda su configuración para el desarrollo:

Cada desarrollador debe utilizar Visual Studio en su puesto de trabajo, y la depuración/prueba no utiliza IIS Express (configurado con los mismos puertos y la configuración a través de todas las máquinas - muy fácil)

A partir de ahí, los desarrolladores deben verificar su código en el control de código fuente y examinar los conflictos que pueden surgir o no. No estoy seguro acerca de SVN, pero la automatización de MSBuild disponible en TFS se puede usar para configurar una política de compilación continua que se implementa en una instalación IIS común para que su código fusionado se pruebe y pueda usar desde la instalación completa de IIS mencionada anteriormente.

Cualquier otra cosa sería una solución/truco que te morderá en el trasero más tarde.

+0

La copia/svn local de tu explicación ya es así. Cada usuario tiene su propio perfil, su propio escritorio/configuración, etc., es solo que tenemos esos 2 servidores de desarrollo (con la misma configuración, los complementos instalados, etc.) y nos conectamos a uno u otro desarrollo. No estoy en condiciones de decidir si esta decisión es buena o no, esta es una gran empresa y solo soy un desarrollador aquí. Solo estoy tratando de encontrar una manera de mejorar las cosas, eso es todo. Temía que no hubiera ninguna solución limpia de todos modos. Tendremos que regresar a Cassini, me temo. –

Cuestiones relacionadas