Construindo com contratos de código?

Eu tenho o seguinte método:

private void DoSomething(CoolClass coolClass) { if (coolClass == null) { throw new ArgumentNullException("coolClass"); } coolClass.Name = "Pepe"; } 

Com o Code Contracts podemos escrever assim:

 private void DoSomething(CoolClass coolClass) { Contract.Requires(coolClass != null, "IS NULLL!"); coolClass.Name = "Pepe"; } 

O segundo método é mais curto e mais simples. O problema que tenho é que quando você constrói, em tempo de execução não lança a exceção, mostra isso:

Descrição: um assembly (provavelmente “CodeContractsTest”) deve ser reescrito usando o gravador de binário de contratos de código (CCRewrite) porque ele está chamando Contract.Requires e o símbolo CONTRACTS_FULL é definido. Remova quaisquer definições explícitas do símbolo CONTRACTS_FULL do seu projeto e reconstrua. O CCRewrite pode ser baixado em http://go.microsoft.com/fwlink/?LinkID=169180 . Depois que o reescritor é instalado, ele pode ser ativado no Visual Studio a partir da página Propriedades do projeto no painel Contratos de código. Certifique-se de que “Executar verificação de contrato em tempo de execução” esteja ativado, o que definirá CONTRACTS_FULL.

A menos que com o VS você baixe o CodeContracts for .net daqui .

E, em seguida, você verifica a “Verificação de tempo de execução” no projeto, de modo que, ao criá-la em tempo de execução, a exceção seja lançada.

Nosso aplicativo é criado com o Jenkins com scripts do PowerShell. Existe alguma maneira de verificar em tempo de execução e lançar a exceção, com um simples comando ou atributo, ou algo fácil?

   

    Por que você simplesmente não escreve sua própria versão do método, se você gosta da simplicidade?

     public class CustomContract { public static void Requires( bool Predicate, string Message ) where TException : Exception, new() { if ( !Predicate ) { Debug.WriteLine( Message ); throw new TException(); } } } 

    Usar contratos de código apenas para ter uma API amigável soa como pardais de tiro com um canhão.

    Alterando as propriedades do projeto a seguir, eu poderia eliminar essa exceção durante a execução.

    Clique com o botão direito do mouse em project -> Properties -> Code Contract (Tab) altere o modo de assembly para “Contrato Padrão Requer” e marque a checkbox de seleção – Executar verificação de contrato de tempo de execução