private void AddAssemblyDependency(GenerationEventArgs e, VSProject project, string assemblyName, string assemblyLocation, bool copyLocal) { try { bool hasRef = project.References.Cast <Reference>().Any( r => r != null && string.Equals(r.Name, assemblyName, StringComparison.InvariantCultureIgnoreCase)); if (!hasRef) { Reference dllRef = project.References.Add(assemblyLocation); dllRef.CopyLocal = copyLocal; } } catch (Exception ex) { e.GenerateWarning("Failed to add reference to " + assemblyName + ":" + ex.Message); } }
private static void PrintGeneratorEvents(object sender, GenerationEventArgs args) { PrintOnlyIfVerbose($"{args.GenerationEventType}: {args.Sequence} - {args.BlockType} {args.DisplayName} IsContainer: {args.IsContainer} IsEnabled: {args.IsEnabled}"); }
/// <summary> /// Handles the GenerationDoubleClick event of the Browser control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Savchin.CodeGeneration.Common.GenerationEventArgs"/> instance containing the event data.</param> void Browser_GenerationDoubleClick(object sender, GenerationEventArgs e) { _openTemplateCommand.Execute(ProjectBrowser.Project.GetFullPath(e.Generation.TemplateFile), sender); }
private static void PrintGeneratorEvents(object sender, GenerationEventArgs args) { PrintOnlyIfVerbose($"{args.GenerationEventType}: {args.Sequence} - {args.BlockType} {args.DisplayName} IsContainer: {args.IsContainer} IsEnabled: {args.IsEnabled}"); }
private static void PrintEvents(object o, GenerationEventArgs args) { Debug.WriteLine( $"{args.GenerationEventType}: {args.Sequence} - {args.BlockType} {args.DisplayName} IsContainer: {args.IsContainer} IsEnabled: {args.IsEnabled}"); Debug.Flush(); }
private void GenerateCode(object sender, GenerationEventArgs e) { e.OutputFileExtension = ".dot"; string templatesDir = GetInstallPath("templates"); if (!Directory.Exists(templatesDir)) { e.GenerateError("Missing templates from install: " + templatesDir); return; } string libDll = GetInstallPath(GetInstallPath(@"lib\ModelSharp.Lib.dll")); if (!Directory.Exists(templatesDir)) { e.GenerateError("Missing dll from install: " + libDll); return; } string tempFile = Path.GetTempFileName(); string tempDir = null; try { tempDir = Directory.CreateDirectory(tempFile + "_dir").FullName; var modelProcessor = new ModelProcessor(templatesDir, e.InputFilePath, true); modelProcessor.BaseOutputPath = tempDir; modelProcessor.GlobalConfig.ProjectNamespace = e.Namespace; var result = modelProcessor.Process(); // Output to console // foreach (var msg in result.Messages) // { // string txt; // if (msg.Line > 0) // txt = String.Format("[{0}] [{1:0000} : {2:000}] {3}", // msg.Error ? "ERROR" : "INFO ", msg.Line, msg.Column, // msg.Description); // else // txt = String.Format("[{0}] {1}", msg.Error ? "ERROR" : "INFO ", msg.Description); // // Console.WriteLine(txt); // } if (!result.Success) { e.GenerateError("Error generating model"); foreach (var msg in result.Messages) { if (msg.Error) { if (msg.Line > 0) { e.GenerateError(msg.Description, msg.Line - 1, msg.Column); } else { e.GenerateError(msg.Description); } } } return; } //string filename = Path.Combine(tempDir, names.First()); //foreach (var line in File.ReadLines(filename)) //{ // e.OutputCode.AppendLine(line); //} string inputDir = new FileInfo(e.InputFilePath).DirectoryName; MergeFiles(result.NotToChangeFilenames, tempDir, inputDir, false); MergeFiles(result.EditableFilenames, tempDir, inputDir, true); SetSubItems(e, inputDir, result.NotToChangeFilenames); AddToProject(e, inputDir, result.EditableFilenames); EnsureDllIsInProject(e, libDll); } finally { if (tempDir != null) { foreach (var file in Directory.GetFiles(tempDir)) { if (file == "." || file == "..") { continue; } DeleteFile(Path.Combine(tempDir, file), e); } DeleteDir(tempDir, e); } DeleteFile(tempFile, e); } }
private void AddAssemblyDependency(GenerationEventArgs e, VSProject project, Assembly assembly) { AddAssemblyDependency(e, project, assembly.GetName().Name, assembly.Location, false); }
private static void EvolutionaryProcessTSP_OnGenerationDone(object sender, GenerationEventArgs <TSPIndividual> e) { Console.WriteLine($"{e.Generation} -> {e.Best}"); }