Recientemente he migrado una gran cantidad de pruebas de precondición manual y lanzamiento de excepción con contratos de código. En lugar de actualizar a .NET 4, he estado usando el ensamblado Microsoft.Contracts.dll
, por lo que podría mantener .NET 3.5 un poco más (esta es una biblioteca que se usa tanto con .NET 3.5 como con .NET 4). Configuré el reescritor de contratos en Visual Studio 2010 y los contratos funcionan bien.Contratos de código para .NET 3.5 arruina el depurador de VS10
Sin embargo, desde que hice ese cambio, me he dado cuenta de que el depurador actúa de forma divertida en los métodos con contratos, especialmente en clases con un ContractInvariantMethod. El cursor de ejecución no parece coincidir siempre con la línea resaltada, algunos puntos de corte no se activan y he tenido un método en el que el depurador no podía decir los nombres de las variables locales y mostraba cosas como CS$1$0000
. Esto es en versiones de depuración.
¿Existen problemas conocidos sobre el uso de los contratos de código en Microsoft.Contracts.dll
en .NET 3.5 a VS10? ¿Surgen problemas similares con los contratos de código en .NET 4?
[Editar] Esta pregunta me lleva a crear un error en Microsoft Connect: https://connect.microsoft.com/VisualStudio/feedback/details/573983/code-contract-rewriting-messes-up-local-variable-names-in-iterator-methods-while-debugging
[OT] Nombre de usuario impresionante :) – roundcrisis