2012-03-24 17 views
7

Tengo una solución con varios proyectos en ella. Uno de los proyectos incluye métodos adicionales de Assert para pruebas unitarias. Hace referencia al Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.1.0.0. También incluye otros proyectos de prueba, que hacen referencia tanto a UnitTestFramework de Microsoft como a mi proyecto con métodos assert adicionales.Visual Studio persiste en usar UnitTestFramework 10.0.0.0

Cada vez que reinicie Visual Studio y compilar, obtengo la siguiente advertencia:

conflictos encontradas entre diferentes versiones de un mismo ensamblado dependiente .

He intentado cambiar todas las referencias a UnitTestFramework a 10.1.0.0, pero al reiniciar Visual Studio parece volver a configurarlas en 10.0.0.0. Incluso he intentado cambiar el archivo del proyecto fuera de Visual Studio, pero al abrir el proyecto en Visual Studio las referencias muestran nuevamente la versión anterior en el explorador de soluciones. Al cerrar Visual Studio sin realizar ninguna modificación de archivo, se le pregunta si desea guardar los cambios en los archivos del proyecto.

¿Cómo evito que Visual Studio cambie la versión de UnitTestFramework referenciada en mis proyectos?

+0

I' Intente volver a aplicar VS SP1 – KMoraz

+0

@KMoraz Ahora tengo una computadora portátil nueva, con una instalación limpia. Descargué el proyecto nuevamente y estos problemas persisten. Creo que algo está mal con los archivos del proyecto o es un error de Visual Studio. –

+0

Este problema aún se está produciendo en Visual Studio 2013, actualización 4. –

Respuesta

3

Tenía el mismo problema. Uno de nuestros desarrolladores estaba reorganizando asambleas y su VS por alguna razón desconocida cambiado esto:

<Choose> 
    <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> 
    <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 
    </ItemGroup> 
    </When> 
    <Otherwise> 
    <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" /> 
    </ItemGroup> 
    </Otherwise> 
</Choose> 

en esto:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 
<Choose> 
    <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> 
    <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 
    </ItemGroup> 
    </When> 
    <Otherwise /> 
</Choose> 

La primera línea de la que hacía cada vez cambió el de todos los demás sistemas (mismos síntomas que tú).

ya que no tenemos planes de apoyo 3.5 de todos modos, me fijo mediante la eliminación de la sección "Elegir" y la simplificación en:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" /> 

(eliminación de la versión específica por completo de la referencia)

+0

Por alguna razón, parece que funciona. Sin embargo, vale la pena señalar que esto aparentemente da como resultado la carga de 10.0. Cuando todas las referencias se establecen en 10.0, y por lo tanto no se carga 10.1, también funciona. Por lo tanto, no especificar la versión puede ser simplemente una forma de garantizar que 10.1 no se cargue, que es una forma más general de evitar esto (¿error?). –

+0

Además, (aunque esto podría ser totalmente una coincidencia), parece que le lleva _mucho_ más (> 1 minuto) cerrar Visual Studio cuando sigue este enfoque? : / –