Articles of compiler construction

Perché le proprietà automatiche non sono allineate per impostazione predefinita?

Poiché le proprietà sono solo metodi sotto controllo, è comprensibile che le prestazioni di qualsiasi logica che potrebbero eseguire potrebbero o meno migliorare le prestazioni, quindi è comprensibile il motivo per cui la JIT deve verificare se i metodi valgono la pena di essere integrati. Le proprietà automatiche tuttavia (per quanto ho capito) non possono […]

Soluzione per C # CodeDom che causa stack overflow (CS1647) in csc.exe?

Ho una situazione in cui ho bisogno di generare una class con un const string di grandi dimensioni. Il codice al di fuori del mio controllo fa sì che il mio albero CodeDom generato sia emesso nell’origine C # e successivamente compilato come parte di un Assembly più grande. Sfortunatamente, mi sono imbattuto in una […]

Compilazione del codice in fase di esecuzione, caricamento nell’appodominio corrente ma Type.GetType non può vederlo

Sto compilando del codice in fase di esecuzione, quindi caricando l’assembly nell’appdomain corrente, tuttavia quando provo a fare Type.GetType non riesce a trovare il tipo … Ecco come compilo il codice … public static Assembly CompileCode(string code) { Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider(); ICodeCompiler compiler = provider.CreateCompiler(); CompilerParameters compilerparams = new CompilerParameters(); compilerparams.GenerateExecutable = false; […]

Come decide il compilatore C # di emettere riferimenti all’assemblaggio retargetable?

Sono stati introdotti riferimenti all’assemblaggio retargetable per .NET Compact Framework e ora vengono utilizzati per supportare librerie di classi portatili. Fondamentalmente, il compilatore emette il seguente MSIL: .assembly extern retargetable mscorlib { .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) .ver 2:0:5:0 } Come fa il compilatore C # a capire che […]

Alta, fluttuante ‘% Time in JIT’ sul sito Web ASP.NET precompilato

Con un sito Web ASP.NET di 150 * .dll precompilato (aggiornabile), quali sono alcune possibili cause per un ‘ % Time in JIT ‘ che è spesso piuttosto elevato (> 60%) e fluttuante molto dopo che l’applicazione si è riscaldata ( accesso a tutte le funzionalità) e senza riavvii dell’app o modifiche ai file che […]

Costruire il proprio compilatore C # usando ANTLR: Compilation Unit

// Crea uno scanner che legge dallo stream di input passato a noi CSLexer lexer = new CSLexer (new ANTLRFileStream (f)); tokens.TokenSource = lexer; // Create a parser that reads from the scanner CSParser parser = new CSParser(tokens); // start parsing at the compilationUnit rule CSParser.compilation_unit_return x = parser.compilation_unit(); object ast = x.Tree; Cosa posso […]

Compilare un array C # in fase di runtime e usarlo nel codice?

So che il codice C # può essere compilato in fase di esecuzione usando C # . Tuttavia sono molto molto traballante da quando ne ho letto qualche minuto fa. Imparo molto meglio con gli esempi. Allora dimmi. Se voglio compilare qualcosa come: // MapScript.CS String[] LevelMap = { “WWWWWWWWWWWWWWWWWWW”, “WGGGGGGGGGGGGGGGGGW”, “WGGGGGGGGGGGGGGGGGW”, “WWWWWWWWWWWWWWWWWWW” }; e […]

Utilizzo di CSharpCodeProvider con .net 4.5 beta

Recentemente ho installato Visual Studio 11 Beta e sto tentando di aggiornare un progetto 4.0 esistente per utilizzare 4.5. Nel programma compila un codice generato dynamicmente usando CSharpCodeProvider . /// /// Compile and return a reference to the compiled assembly /// private Assembly Compile() { var referencedDlls = new List { “mscorlib.dll”, “System.dll”, “System.Core.dll”, }; […]

Microsoft CCI – risorse, riferimenti per scrivere compilatori

Qualche tempo fa stavo lavorando al compilatore, ho usato System.Reflection per generare codice (IL) dal mio AST. Ora, ho un’idea per un altro compilatore su cui mi piacerebbe lavorare (sarà un altro progetto per animali domestici, niente che verrà usato nel codice di produzione, almeno, non ora). Come sapete, i progetti di animali domestici hanno […]

InvalidCastException per object dello stesso tipo: carico di controllo personalizzato

Ho un errore molto cablato, uno dei miei controlli personalizzati sembra che crei due file compilati e quando provo a caricarlo dynamicmente con LoadControl() non riesco proprio perché non riesco a LoadControl() l’uno all’altro – anche se sono esattamente lo stesso. Scrivo il messaggio per vedere che tutto è lo stesso, è solo modificare la […]