Pavel Novotný

.NET Framework, SharePoint, Dynamics CRM, RC Helicopters, Honda VFR CrossRunner

C# Script Engine - Aneb co command line neumí

Projekt C# Script Engine nepatří mezi nové projekty, ale za to velmi pozoruhodné. Spousty vývojářů řeší složité operace které jsou již mimo rozsah vlastností command line psaním vlastních aplikací, které není možné snadno editovat například u zákazníka. Přitom projekt CS Script (www.csscript.net) vše podstatné obsahuje.

  • scripty je možné psát ve všech CLS podporovaných jazycích
  • .NET 1.1 i 2.0 jsou podporovány
  • je možné vytvářet COM/WebService/Remoting proxy objekty za běhu
  • scripty mohou být zkompilované
  • script může importovat další script (pseudo include)
  • podporovány jsou všechny OS s .NET (Windows 98, ME, NT, 2000, XP and Windows Server 2003)

.NET COM Hell

Možná jste se již také řešili problém s volání COM objektů z .NET aplikace, wizardy a tutorialy vypadají moc pěkně a developer friendly, import COM objektů do referencí projektu klikací metodou je tak snadný, ale brzy každý narazí na problémy spojené se změnou rozhraní COM objektu, novou verzí atd. Před spuštění aplikace/aktivace assembly se provádí kontrola všech referencí a podreferencí projektu, v případě COM interop assembly se provádí kontrola shodné verze COM objektu pro kterou byl wrapper vytvořen - v tom je ale právě ten problém, pokud totiž voláte pouze jednu funkci, která se nemění, s další verzí COM objektu se celá aplikace která danou knihovnu používá nespustí (takže není možné například využívat COM objekty Office pro různé verze), ukončení aplikace není rovněž bezproblémové, protože se nedá nijak snadno zničit všechny reference na COM objekt i když voláte všude možně Marshal.ReleaseComObject (to je konkrétní případ pro Excelu)
Je tedy několik možností jak tento problém řešit:

Více...