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); }
/// <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(""); }