public static void Execute(Guid assemblyId) { using (var dbContext = new OrationiDatabaseContext()) { var pluginAssembly = dbContext.PluginAsseblies.FirstOrDefault(pa => pa.Id == assemblyId); if (pluginAssembly is null) { throw new InvalidOperationException($"Не найдена сборка с Id - {assemblyId}"); } var pluginAssemblyInfo = PluginAssemblyInfo.Create(pluginAssembly); if (!pluginAssemblyInfo.IsFolderExists) { Directory.CreateDirectory(pluginAssemblyInfo.BaseFolder); } AppDomain.CurrentDomain.AppendPrivatePath(pluginAssemblyInfo.BaseFolder); var zipAssemblyPackage = $"{pluginAssemblyInfo.FullPath}.zip"; using (var writer = new BinaryWriter(File.OpenWrite(zipAssemblyPackage))) { writer.Write(pluginAssembly.Assembly, 0, pluginAssembly.Assembly.Length); } ZipFile.ExtractToDirectory(zipAssemblyPackage, pluginAssemblyInfo.BaseFolder); File.Delete(zipAssemblyPackage); } }
internal static string WarmupAssembly(PipelineStepDescription stepDescription) { var pluginAssemblyInfo = PluginAssemblyInfo.Create(stepDescription); if (!pluginAssemblyInfo.IsAssemblyExist) { Execute(stepDescription.AssemblyId); } return(pluginAssemblyInfo.FullPath); }