Bueno, en caso de que alguien esté trabajando con un código heredado y esté arrinconado en el uso de Microsoft Moles, he investigado mucho sobre este tema y espero salvar algo del enojo y la frustración que encontré.
Intenté usar la sugerencia de la respuesta aceptada, lo que significaba ir al directorio de Moles (en C: \ Archivos de programa ...) y ejecutar la utilidad de línea de comandos (moles.exe) como Administrador. Hay muchas opciones, una de las cuales le permite incluir ensambles referenciados (como se sugirió anteriormente).
Sin embargo, incluso cuando intento ejecutar la utilidad sin los ensamblados a los que se hace referencia, finalmente llama al compilador de C# (csc.exe) con rutas de ensamblaje referenciadas predefinidas, que es donde concluyo que la confusión entre versiones de .NET Framework ocurre. No pude conseguirlo no para incluir estas rutas de ensamblaje.
Mi situación específica era que estaba intentando crear un ensamblado personalizado, sin embargo porque, aparentemente, tenía .NET 4.5 instalado en esta máquina, se quejaba al compilar sobre System.Collections.Generics IReadOnlyCollection, IReadOnlyDictionary y yo piensa uno otro.
Solución: La solución única llegué al trabajo era utilizar filtros Mole, que leí acerca de otros mensajes y en el sitio web de Microsoft Moles (hay un link especial para .NET 4.5 Solución de problemas en la principal página). En Visual Studio, simplemente agregué el ensamblado de Moles a mi proyecto de prueba unitaria para el conjunto personalizado de referencia haciendo clic con el botón derecho en Solution Explorer. Luego intenté construir. Por cada error que he recibido, he observado las clases ofensivas y los excluidos de ser calzar o del pie aplastado añadiendo lo siguiente a los topos del archivo:
<Moles xmlns="http://schemas.microsoft.com/moles/2010/">
<Assembly Name = "MyCustomAssembly" />
<StubGeneration>
<Types>
<Remove TypeName="ClassThatUsesIReadOnlyCollectionEtc" />
</Types>
</StubGeneration>
<MoleGeneration>
<Types>
<Remove TypeName="ClassThatUsesIReadOnlyCollectionEtc" />
</Types>
</MoleGeneration>
</Moles>
Ahora claramente que no va a funcionar si necesidad las clases que estás excluyendo de la generación mole/stub, sin embargo, para mi caso funcionó bien porque las clases ofensivas no eran importantes y no necesitaría Stub o Shim nada en esas clases.
Pude resolver este problema de forma más simple (desde mi punto de vista, ya que no estoy familiarizado con Moles, solo quiero construir el proyecto de mi equipo). Simplemente actualicé la DLL en% Program Files (x86)% \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ a la versión más nueva disponible en% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Primero, realice copias de seguridad ! (como lo hice). No sé qué otros efectos puede tener, pero puede ser una forma sencilla de superar el paso de compilación. @Nick: ¿podría proporcionar el comando real moles.exe que ejecutó? –
@Dustin - Ya no tengo el comando, ya que ha pasado bastante tiempo. Mis disculpas. –
¡No es necesario disculparse! Si no fuera por su respuesta, probablemente no habría resuelto este problema por bastante tiempo. –