Beispiel #1
0
        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}");
 }
Beispiel #3
0
 /// <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();
 }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
 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}");
 }