7

Tengo una solución de Visual Studio que contiene varios proyectos y he configurado las referencias entre los proyectos como referencias de proyectos.Cómo establecer la propiedad "Versión específica" para las referencias de proyectos en Visual Studio

Cuando se añade una referencia a un conjunto, las propiedades de las referencias contienen un ajuste para

Specific Version = True|False

Esta propiedad no se encuentra para las referencias de proyectos. ¿Cómo se puede establecer? Me gustaría que mi solución cargue cualquier ensamblado disponible (no importa qué versión) en la carpeta bin.

Tuve un problema cuando una instancia de flujo de trabajo (Workflow Foundation) se deserializó y las dependencias se actualizaron mientras tanto.

Respuesta

1

He encontrado la solución a mi problema. Se describe bastante detallada here. El problema no es una cuestión de referencias de proyecto incorrectas, sino más una pregunta de de/serialización de instancias de flujo de trabajo.

Gracias a todos los que intentaron ayudar.

+0

Lamentablemente, el enlace está roto . ¿Es posible arreglarlo? –

+0

He actualizado el enlace, pero la primera parte de la publicación ya no está disponible. Tenga en cuenta que el problema fue con WF 3.5. Todays WF 4.5 ofrece mucho más fuera de la caja en términos de versiones de WF. –

3

Podría estar malinterpretando su pregunta, pero cuando agrega una referencia de proyecto, el ensamblaje del proyecto siempre se carga en cualquier proyecto que haga referencia a él cuando se construya el proyecto. Por lo tanto, siempre tendrá el último ensamblaje disponible en la carpeta bin para ese proyecto. VS trata los proyectos de manera diferente que otras asambleas a ese respecto.

+0

He actualizado la pregunta. Me gustaría cargar cualquier versión disponible en la carpeta bin. Tuve un problema cuando una instancia de flujo de trabajo (Workflow Foundation) se deserializó y las dependencias se actualizaron mientras tanto. –

1

Puede agregar referencias a dlls de salida del proyecto en lugar de proyectos. Entonces podrá establecer la configuración de Versión Específica.

+0

Gracias por su respuesta.Pero, ¿cómo se manejan las asambleas de depuración y liberación? Están en diferentes carpetas. –

+1

Puede usar variables en editando archivos .csproj, p. Ej. $ (OutDir) \ Referenced.dll o .. \ Referenced \ bin \ $ (Configuración) \ Referenced.dll

6

Creo que el problema es que lo que está preguntando no es posible directamente con una referencia de proyecto, creo que siempre se convierte implícitamente en una 'versión explícita', debido a la naturaleza del enlace.

La forma en que podría hacer esto (llamando el proyecto Una referencia actualmente, y el proyecto de referencia B):

  • que el proyecto que desea hacer referencia en su solución, tal como lo hace ahora con la referencia del proyecto
  • establecer explícitamente la cadena de dependencias por lo que el proyecto de referencia 'a' se construye primero
  • construir el proyecto una vez que se hace referencia en primer lugar manualmente
  • Crear una referencia de ensamblado en el proyecto B a los resultados de la estructura en el proyecto A
  • establecer la referencia de montaje para 'versión específica = false'

El orden de construcción (dependencia) garantizará que A siempre se compila antes de que B y B hará referencia a ella desde el directorio de salida binaria de A.

(aunque es un poco frágil y no lo recomendaría ya que es fácil obtener resultados incorrectos si la configuración no es correcta o si el sol se alinea con las estrellas incorrectas o algunos tales)

+0

Puede admitir la coincidencia de la carpeta de salida del proyecto al que se hace referencia para diferentes configuraciones de compilación (Release/Debug) abriendo el archivo "ProjectB.csproj" en un editor de texto y cambiar '' por la referencia (por ejemplo) ' .. \ ProjectA \ bin \ $ (Configuración) \ ProjectA.dll' – Alain

Cuestiones relacionadas