Las pruebas unitarias VS2010 SP1 que apuntan al marco 3.5 fallan si se usa el descriptor de acceso privado

Convertí una solución de VS2008 a VS2010 SP1, y cambié el proyecto de prueba de unidad para apuntar al marco 3.5. Además de tener que corregir algunas referencias en el proyecto de prueba de la unidad, todo funcionó bien y la solución se construyó con éxito. La mayoría de las pruebas se ejecutaron con éxito, pero hubo algunas que fallaron. Los que fallaron están usando un descriptor de acceso privado. Personalmente, prefiero simplemente eliminar estas pruebas, ya que no creo que sean necesarias, pero siempre que revele un posible error en SP1, pensé en ver si alguien podría encontrar una solución alternativa.

El mensaje de error que recibo al ejecutar las pruebas es "Este ensamblado está creado por un tiempo de ejecución más nuevo que el tiempo de ejecución actualmente cargado y no se puede cargar". Lo mejor que puedo decir es que parece que el ensamblaje del descriptor de acceso privado está siendo construido por el tiempo de ejecución 4.0 (probablemente a través de Microsoft.VisualStudio.QualityTools.UnitTestFramework), pero dado que MSTest carga el tiempo de ejecución 3.5, se produce el error resultante.

Intenté cambiar la referencia de Microsoft.VisualStudio.QualityTools.UnitTestFramework para usar específicamente la versión 9.0 (actualmente es 10.1). Esto da como resultado un error de tiempo de compilación que dice que el ensamblado de acceso privado utiliza la versión 10.0 de Microsoft.VisualStudio.QualityTools.UnitTestFramework, que es superior a la versión 9.0.

He eliminado el ensamblado de acceso privado generado y también lo he recreado, y aún tengo el mismo problema. Parece que algo no está sincronizado con VS2010 SP1 cuando el marco 3.5 está dirigido a un proyecto de prueba unitaria.

Aquí está el código para una de las pruebas unitarias (de nuevo, no es una prueba muy valiosa, pero ese no es el punto de la publicación ...):

    [TestMethod()]
    public void GetNullableCharValue_DBNull_ReturnsNull_Test()
    {
        object value = DBNull.Value;
        Nullable<char> expected = null;
        Nullable<char> actual;
        actual = RepositoryBase_Accessor.GetNullableCharValue(value);
        Assert.AreEqual(expected, actual);
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta