Pregunta Los contratos de código crean acciones de ensamblaje de referencia


Estoy usando contratos de código e intentando entender cuál de las opciones de compilación debo usar y cuándo. Las opciones de compilación del ensamblaje del contrato se definen en las propiedades del proyecto

Contratos de código -> Asamblea de referencia de contrato:

  • Ninguna
  • Construir
  • DoNotBuild

¿Alguna idea o recomendación?


32
2018-04-28 10:17


origen


Respuestas:


Sí, las opciones Ninguno y DoNotBuild parecen un poco extrañas.

Si selecciona Ninguno y hace referencia a la biblioteca en un Proyecto con contratos, recibirá una Advertencia.
Si selecciona DoNotBuild, no recibirá una advertencia.

Y, por supuesto, solo Build produce un conjunto de referencia, y para un .EXE no importa.


7
2018-04-28 20:08



los Asamblea de referencia de contrato es un tipo especial de ensamblaje que preserva los contratos de código que definió en sus archivos de código fuente. Esto es necesario porque en tiempo de compilación, el código contrae el "reescritor" (ccrewriter) elimina o reemplaza cada contrato por un código de verificación equivalente (Contract.Requires(someBool) podría ser reescrito como if (!someBool) throw)

Sin los contratos de código, si luego hace referencia al ensamblado compilado (no al proyecto ni a todos sus archivos de código fuente) en una solución diferente, es posible que no tenga conocimiento de ninguno de los contratos de código. Tenía un Asamblea de referencia de contrato creado, el IDE podría tener en cuenta cualquier contrato en ese conjunto durante el análisis estático.

En cuanto a la configuración, esto es lo que quieren decir:

  • (none) significa que no ha hecho una selección, por lo que no se creará ningún conjunto de referencia. Si otro ensamblaje depende de este y ha seleccionado Build para ello, puede recibir un mensaje de error / advertencia de que "no se encontró un conjunto de referencia de contrato".

  • Si cambia la configuración a Build, se creará un conjunto de referencia que contiene todos sus contratos. Podrá usar todos los contratos de código definidos en ese ensamblaje como si tuviera el código fuente. Elija esto si está creando una biblioteca que será utilizada por un tercero (un paquete NuGet, por ejemplo) o cualquier persona después de compilar el ensamblaje para que tengan el beneficio de sus contratos de código en análisis estático.

  • Si cambia la configuración a DoNotBuild, no se creará ningún ensamblaje de referencia que preserve sus contratos de código. Elija esto si no desea utilizar este ensamblaje en otro lugar, o si todos los demás usuarios del ensamblaje tendrán acceso al código fuente y no necesitarán el ensamblaje de referencia. Puede acelerar la construcción un poco.


35
2017-07-26 23:58