Пример #1
0
        private WeaverHelper([NotNull] string assemblyName)
        {
            // ReSharper disable once AssignNullToNotNullAttribute
            // ReSharper disable once PossibleNullReferenceException
            var projectDir = Path.GetFullPath(Path.Combine(TestContext.CurrentContext.TestDirectory, $@"..\..\..\..\{assemblyName}"));

            var binaryDir = Path.Combine(projectDir, "bin", Configuration, "Net46");

            OriginalAssemblyPath = Path.Combine(binaryDir, $@"{assemblyName}.dll");

            NewAssemblyPath = OriginalAssemblyPath.Replace(".dll", "2.dll");

            using (var moduleDefinition = ModuleDefinition.ReadModule(OriginalAssemblyPath, new ReaderParameters(ReadingMode.Immediate)
            {
                ReadSymbols = true
            }))
            {
                Debug.Assert(moduleDefinition != null, "moduleDefinition != null");

                var weavingTask = new ModuleWeaver
                {
                    ModuleDefinition = moduleDefinition,
                };

                weavingTask.LogErrorPoint   += WeavingTask_LogErrorPoint;
                weavingTask.LogError        += WeavingTask_LogError;
                weavingTask.LogWarningPoint += WeavingTask_LogErrorPoint;
                weavingTask.LogWarning      += WeavingTask_LogError;

                weavingTask.LogInfo  += WeavingTask_LogInfo;
                weavingTask.LogDebug += WeavingTask_LogDebug;

                weavingTask.Execute();

                var assemblyNameDefinition = moduleDefinition.Assembly?.Name;
                Debug.Assert(assemblyNameDefinition != null, "assemblyNameDefinition != null");

                // ReSharper disable once PossibleNullReferenceException
                assemblyNameDefinition.Version = new Version(0, 2, 0, assemblyNameDefinition.Version.Revision);
                moduleDefinition.Write(NewAssemblyPath, new WriterParameters {
                    WriteSymbols = true
                });
            }

            // ReSharper disable once AssignNullToNotNullAttribute
            Assembly = Assembly.LoadFile(NewAssemblyPath);
        }
Пример #2
0
        /// <summary>
        /// Путь к файлам .lua (к проекту)
        /// </summary>
        /// <returns></returns>
        public string GetPtusaProjectsPath(string projectName)
        {
            try
            {
                // Поиск пути к каталогу с надстройкой
                string[] originalAssemblyPath = OriginalAssemblyPath
                                                .Split('\\');
                string configFileName = StaticHelper.CommonConst.ConfigFileName;

                int    sourceEnd = originalAssemblyPath.Length;
                string path      = @"";
                for (int source = 0; source < sourceEnd; source++)
                {
                    path += originalAssemblyPath[source].ToString() + "\\";
                }
                path += StaticHelper.CommonConst.ConfigFileName;

                // Поиск файла .ini
                if (!File.Exists(path))
                {
                    // Если не нашли - создаем новый,
                    // записываем дефолтные данные
                    new PInvoke.IniFile(path);
                    StreamWriter sr = new StreamWriter(path, true);
                    sr.WriteLine("[path]\nfolder_path=");
                    sr.Close();
                    sr.Flush();
                }
                var iniFile = new PInvoke.IniFile(path);

                // Считывание и возврат пути каталога проектов
                string projectsFolders =
                    iniFile.ReadString("path", "folder_path", "");
                string[] projectsFolderArray = projectsFolders.Split(';');
                string   projectsFolder      = "";
                bool     firstPathIsSaved    = false;
                string   firstPath           = "";
                foreach (string pathFromArray in projectsFolderArray)
                {
                    if (pathFromArray != "")
                    {
                        if (firstPathIsSaved == false)
                        {
                            firstPath        = pathFromArray;
                            firstPathIsSaved = true;
                        }
                        projectsFolder = pathFromArray;
                        if (projectsFolder.Last() != '\\')
                        {
                            projectsFolder += '\\';
                        }
                        string projectsPath = projectsFolder + projectName;
                        if (Directory.Exists(projectsPath))
                        {
                            return(projectsFolder);
                        }
                    }
                }

                if (firstPathIsSaved == false && firstPath == "")
                {
                    MessageBox.Show("Путь к каталогу с проектами не найден.\n" +
                                    "Пожалуйста, проверьте конфигурацию!", "Внимание",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    return(firstPath + '\\');
                }
            }
            catch
            {
                MessageBox.Show("Файл конфигурации не найден - будет создан " +
                                "новый со стандартным описанием. Пожалуйста, измените " +
                                "путь к каталогу с проектами, где хранятся Lua файлы!",
                                "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            return("");
        }