[.NET] eXtensible C# (Precompiler)

Pagina: 1
Acties:

  • misfire
  • Registratie: Maart 2001
  • Laatst online: 08-07 20:56
Deze tool verdient wel wat aandacht: een leuke toevoeging op de C# compiler is eXtensible C# (http://www.resolvecorp.com/).

Het werkt met een soort preprocessor om met custom compiler attributes allerlei zaken extra aan de code te analyseren, toe te voegen of te wijzigen. Klinkt heel moeilijk, maar het werkt erg simpel.

Mogelijkheden in het kort:
* Declaratief aangeven van pre- en postcondities.
* Code obfuscaten.
* Code verifiëren op verschillende regels, en ook compile time checking van pre- en postcondities.
* Code coverage analyses.

Het mooiste is dat de code volledig backwards compatibel blijft (source kan worden hercompileerd met de reguliere C# compiler), je pre- en postcondities worden overerfd, het gebruik van de code generatie ipv interception geen extra overhead of fouten veroorzaakt, en je hoeft geen nieuwe taalconstructies te leren. Bovendien kun je zelf nog extra dingen er bij schrijven. Het tooltje is gratis en source wordt gedeeltelijk meegeleverd. Even het bekijken waard. Voorbeelden en een presentatie staan op de site.

Ik heb het zelf geprobeerd en ik vind het een stuk eenvoudiger werken dan veel andere oplossingen, waarbij je vaak met custom talen/tooling of andere paradigma's moet werken om dezelfde functionaliteit te krijgen. De help is een beetje summier en onvolledig, maar desalniettemin een erg knap staaltje werk!

PS: Heeft iemand toevallig al iets met de custom tracing/debugging faciliteiten van dot net gedaan, en zo ja, waar kan ik hier een paar leuke mogelijkheden voor vinden?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik denk dat die attributen een extreem waardevolle toevoeging zijn geweest aan .NET. Je kan op een volledig andere manier allerlei meta zaken over je code regelen. Java krijgt het vanaf 1.5 ook (gelukkig). Je kan mbv attributen zelfs AOP gaan beoefenen :)

Ik heb er zelf trouwens nog geen ervaring mee,alleen wat tutorials bekeken.

[ Voor 15% gewijzigd door Alarmnummer op 13-04-2003 20:28 ]


  • misfire
  • Registratie: Maart 2001
  • Laatst online: 08-07 20:56
Attributen zijn echt mega cool. Het mooiste vind ik nog dat iedereen het snapt, en het is ook precies wat je wilt: toevoegen van eigengedefinieerde informatie aan je code. In Java is dit mechanisme inderdaad nu nog pijnlijk afwezig, alhoewel met xdoclets ook poor-mans attributen kunnen worden toegevoegd. In de Java Enterprise en webservice wereld is het gebruik van xdoclets dan ook erg populair, want de door Sun bedachte houtje-touwtje oplossingen om het gebrek aan meta-informatie te compenseren zijn erg omslachtig en foutgevoelig.

Dit systeem werkt overigens wél met een eigen verwerkingsproces en maakt dus niet gebruik van allerlei codemutatiefaciliteiten in dot net (die er niet zijn). De attributen zijn wel legitiem, en kunnen door de reguliere C# compiler ook worden verwerkt, maar de onderliggende functionaliteit (het toevoegen van assertion statements of het afgeven van warnings bij stijlfouten) wordt dan niet meer ingezet.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Het is alleen lullig dat je geen custom build steps kunt definieren in VS.NET, dus dit moet handmatig worden toegevoegd en dat is niet zo fijn.

NUnit gebruikt dacht ik attributes voor debugging / testing.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
EfBe: NUnit gebruikt dacht ik attributes voor debugging / testing.
Idd: http://www.nunit.org/attributes.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • misfire
  • Registratie: Maart 2001
  • Laatst online: 08-07 20:56
Het is alleen lullig dat je geen custom build steps kunt definieren in VS.NET, dus dit moet handmatig worden toegevoegd en dat is niet zo fijn.
Je hoeft dit niet handmatig toe te voegen, want dat doet de plugin installer al. NUnit heeft XC# al in de smiezen en de NUnit Add-in detecteert het ook al goed. Met NAnt, BuildIt of VS.NET 2003 kunnen trouwens zowieso al custom build steps gegenereerd worden in VS.NET.
NUnit gebruikt dacht ik attributes voor debugging / testing.
In NUnit worden Attributes gebruikt voor identificatie van testclasses/methodes in de testassemblies, maar buiten NUnit hebben deze attributes geen toegevoegde waarde. Met XC# wordt oa code geinjecteerd op basis van attributes, deze hebben dus altijd betekenis. Het is trouwens niet bedoeld als vervanging voor NUnit. NUnit is bedoeld als Unit Test, die een functionele test van de code doet. Met XC# kun je wat simpele (assertion) checks op een makkelijke manier toevoegen, maar dit houdt natuurlijk niet in dat een unit test daarmee overbodig is.
Pagina: 1