public Project(ProjectModuleOptions options, string projDir, SatelliteAssemblyFinder satelliteAssemblyFinder) { if (options == null) throw new ArgumentNullException(); this.options = options; this.projDir = projDir; this.satelliteAssemblyFinder = satelliteAssemblyFinder; this.files = new List<ProjectFile>(); this.defaultNamespace = new DefaultNamespaceFinder(options.Module).Find(); this.filename = Path.Combine(projDir, Path.GetFileName(projDir) + options.Language.ProjectFileExtension); this.assemblyName = options.Module.Assembly == null ? string.Empty : options.Module.Assembly.Name.String; this.projectTypeGuids = new HashSet<Guid>(); this.PropertiesFolder = CalculatePropertiesFolder(); this.extraAssemblyReferences = new HashSet<string>(); this.languageGuid = CalculateLanguageGuid(options.Language); }
public Project(ProjectModuleOptions options, string projDir, SatelliteAssemblyFinder satelliteAssemblyFinder) { if (options == null) { throw new ArgumentNullException(); } this.options = options; this.projDir = projDir; this.satelliteAssemblyFinder = satelliteAssemblyFinder; this.files = new List <ProjectFile>(); this.defaultNamespace = new DefaultNamespaceFinder(options.Module).Find(); this.filename = Path.Combine(projDir, Path.GetFileName(projDir) + options.Language.ProjectFileExtension); this.assemblyName = options.Module.Assembly == null ? string.Empty : options.Module.Assembly.Name.String; this.projectTypeGuids = new HashSet <Guid>(); this.PropertiesFolder = CalculatePropertiesFolder(); this.extraAssemblyReferences = new HashSet <string>(); this.languageGuid = CalculateLanguageGuid(options.Language); }
public Project(ProjectModuleOptions options, string projDir, SatelliteAssemblyFinder satelliteAssemblyFinder, Func <TextWriter, IDecompilerOutput> createDecompilerOutput) { if (options == null) { throw new ArgumentNullException(nameof(options)); } this.Options = options; this.Directory = projDir; this.satelliteAssemblyFinder = satelliteAssemblyFinder; this.createDecompilerOutput = createDecompilerOutput; this.Files = new List <ProjectFile>(); this.DefaultNamespace = new DefaultNamespaceFinder(options.Module).Find(); this.Filename = Path.Combine(projDir, Path.GetFileName(projDir) + options.Language.ProjectFileExtension); this.AssemblyName = options.Module.Assembly == null ? string.Empty : options.Module.Assembly.Name.String; this.ProjectTypeGuids = new HashSet <Guid>(); this.PropertiesFolder = CalculatePropertiesFolder(); this.ExtraAssemblyReferences = new HashSet <string>(); this.LanguageGuid = CalculateLanguageGuid(options.Language); }
public void Execute(ExportToProjectVM vm) { vm.ProgressMinimum = 0; vm.ProgressMaximum = 1; vm.TotalProgress = 0; vm.IsIndeterminate = false; Task.Factory.StartNew(() => { AppCulture.InitializeCulture(); var decompilationContext = new DecompilationContext { CancellationToken = cancellationTokenSource.Token, GetDisableAssemblyLoad = () => owner.fileTreeView.FileManager.DisableAssemblyLoad(), }; var options = new ProjectCreatorOptions(vm.Directory, cancellationTokenSource.Token); options.ProjectVersion = vm.ProjectVersion; if (vm.CreateSolution) options.SolutionFilename = vm.SolutionFilename; options.Logger = this; options.ProgressListener = this; bool hasProjectGuid = vm.ProjectGuid.Value != null; string guidFormat = null; int guidNum = 0; if (hasProjectGuid) { string guidStr = vm.ProjectGuid.Value.ToString(); guidNum = int.Parse(guidStr.Substring(36 - 8, 8), NumberStyles.HexNumber); guidFormat = guidStr.Substring(0, 36 - 8) + "{0:X8}"; } foreach (var module in modules.OrderBy(a => a.Location, StringComparer.InvariantCultureIgnoreCase)) { var projOpts = new ProjectModuleOptions(module, vm.Language, decompilationContext) { DontReferenceStdLib = vm.DontReferenceStdLib, UnpackResources = vm.UnpackResources, CreateResX = vm.CreateResX, DecompileXaml = vm.DecompileXaml, ProjectGuid = hasProjectGuid ? new Guid(string.Format(guidFormat, guidNum++)) : Guid.NewGuid(), }; if (bamlDecompiler != null) { var o = BamlDecompilerOptions.Create(vm.Language); projOpts.DecompileBaml = (a, b, c, d) => bamlDecompiler.Decompile(a, b, c, o, d); } options.ProjectModules.Add(projOpts); } var creator = new MSBuildProjectCreator(options); creator.Create(); if (vm.CreateSolution) fileToOpen = creator.SolutionFilename; else fileToOpen = creator.ProjectFilenames.FirstOrDefault(); }, cancellationTokenSource.Token) .ContinueWith(t => { var ex = t.Exception; if (ex != null) Error(string.Format(dnSpy_Resources.ErrorExceptionOccurred, ex)); EmtpyErrorList(); vm.OnExportComplete(); if (!vm.ExportErrors) { dlg.Close(); if (vm.OpenProject) OpenProject(); } }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); }
public void Execute(ExportToProjectVM vm) { vm.ProgressMinimum = 0; vm.ProgressMaximum = 1; vm.TotalProgress = 0; vm.IsIndeterminate = false; Task.Factory.StartNew(() => { AppCulture.InitializeCulture(); var decompilationContext = new DecompilationContext { CancellationToken = cancellationTokenSource.Token, GetDisableAssemblyLoad = () => owner.fileTreeView.FileManager.DisableAssemblyLoad(), }; var options = new ProjectCreatorOptions(vm.Directory, cancellationTokenSource.Token); options.ProjectVersion = vm.ProjectVersion; if (vm.CreateSolution) options.SolutionFilename = vm.SolutionFilename; options.Logger = this; options.ProgressListener = this; foreach (var module in modules) { var projOpts = new ProjectModuleOptions(module, vm.Language, decompilationContext) { DontReferenceStdLib = vm.DontReferenceStdLib, UnpackResources = vm.UnpackResources, CreateResX = vm.CreateResX, DecompileXaml = vm.DecompileXaml, }; if (owner.bamlDecompiler != null) { var o = BamlDecompilerOptions.Create(vm.Language); projOpts.DecompileBaml = (a, b, c, d) => owner.bamlDecompiler.Value.Decompile(a, b, c, o, d); } options.ProjectModules.Add(projOpts); } var creator = new MSBuildProjectCreator(options); creator.Create(); if (vm.CreateSolution) fileToOpen = creator.SolutionFilename; else fileToOpen = creator.ProjectFilenames.FirstOrDefault(); }, cancellationTokenSource.Token) .ContinueWith(t => { var ex = t.Exception; if (ex != null) Error(string.Format(dnSpy_Resources.ErrorExceptionOccurred, ex)); EmtpyErrorList(); vm.OnExportComplete(); if (!vm.ExportErrors) { dlg.Close(); if (vm.OpenProject) OpenProject(); } }, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()); }