void CreateEmptyAppXamlFile() { if (!hasXamlClasses || appTypeProjFile != null) { return; } if ((Options.Module.Characteristics & Characteristics.Dll) != 0) { return; } var file = Files.OfType <TypeProjectFile>().Where(a => DotNetUtils.IsSystemWindowsApplication(a.Type)).FirstOrDefault(); Debug.Assert(file != null); if (file == null) { return; } Debug.Assert(file.DependentUpon == null); if (file.DependentUpon != null) { return; } Files.Remove(file); var filename = file.Filename; var name = Path.GetFileNameWithoutExtension(file.Filename); filename = Path.Combine(Path.GetDirectoryName(filename), name + ".xaml"); var newFile = new XamlTypeProjectFile(file.Type, filename + Options.Language.FileExtension, Options.DecompilationContext, Options.Language, createDecompilerOutput); Files.Add(newFile); var bamlFile = new AppBamlResourceProjectFile(filename, file.Type, Options.Language); newFile.DependentUpon = bamlFile; Files.Add(bamlFile); }
void CreateEmptyAppXamlFile() { if (!hasXamlClasses || appTypeProjFile != null) return; if ((options.Module.Characteristics & Characteristics.Dll) != 0) return; var file = files.OfType<TypeProjectFile>().Where(a => DotNetUtils.IsSystemWindowsApplication(a.Type)).FirstOrDefault(); Debug.Assert(file != null); if (file == null) return; Debug.Assert(file.DependentUpon == null); if (file.DependentUpon != null) return; files.Remove(file); var filename = file.Filename; var name = Path.GetFileNameWithoutExtension(file.Filename); filename = Path.Combine(Path.GetDirectoryName(filename), name + ".xaml"); var newFile = new XamlTypeProjectFile(file.Type, filename + options.Language.FileExtension, options.DecompilationContext, options.Language); files.Add(newFile); var bamlFile = new AppBamlResourceProjectFile(filename, file.Type, options.Language); newFile.DependentUpon = bamlFile; files.Add(bamlFile); }
ProjectFile CreateTypeProjectFile(TypeDef type, FilenameCreator filenameCreator) { var bamlFile = TryGetBamlFile(type); if (bamlFile != null) { var filename = filenameCreator.Create(GetTypeExtension(type), type.FullName); TypeProjectFile newFile; var isAppType = DotNetUtils.IsSystemWindowsApplication(type); if (!options.Language.CanDecompile(DecompilationType.PartialType)) newFile = new TypeProjectFile(type, filename, options.DecompilationContext, options.Language); else newFile = new XamlTypeProjectFile(type, filename, options.DecompilationContext, options.Language); newFile.DependentUpon = bamlFile; if (isAppType && DotNetUtils.IsStartUpClass(type)) { bamlFile.IsAppDef = true; StartupObject = null; } if (isAppType) appTypeProjFile = newFile; return newFile; } const string DESIGNER = ".Designer"; var resxFile = TryGetResXFile(type); if (resxFile != null) { if (DotNetUtils.IsWinForm(type)) { var filename = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename)); var newFile = new WinFormsProjectFile(type, filename, options.DecompilationContext, options.Language); resxFile.DependentUpon = newFile; var dname = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename) + DESIGNER); var winFormsDesignerFile = new WinFormsDesignerProjectFile(newFile, dname); winFormsDesignerFile.DependentUpon = newFile; files.Add(winFormsDesignerFile); return newFile; } else { var filename = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename) + DESIGNER); var newFile = new TypeProjectFile(type, filename, options.DecompilationContext, options.Language); newFile.DependentUpon = resxFile; newFile.AutoGen = true; newFile.DesignTime = true; resxFile.Generator = type.IsPublic ? "PublicResXFileCodeGenerator" : "ResXFileCodeGenerator"; resxFile.LastGenOutput = newFile; return newFile; } } var bt = type.BaseType; if (bt != null && bt.FullName == "System.Configuration.ApplicationSettingsBase") { var designerFilename = filenameCreator.Create(DESIGNER + GetTypeExtension(type), type.FullName); var settingsFilename = filenameCreator.Create(".settings", type.FullName); ProjectFile designerTypeFile; if (options.Language.CanDecompile(DecompilationType.PartialType)) { var typeFilename = filenameCreator.Create(GetTypeExtension(type), type.FullName); var settingsTypeFile = new SettingsTypeProjectFile(type, typeFilename, options.DecompilationContext, options.Language); designerTypeFile = new SettingsDesignerTypeProjectFile(settingsTypeFile, designerFilename); files.Add(settingsTypeFile); } else designerTypeFile = new TypeProjectFile(type, designerFilename, options.DecompilationContext, options.Language); var settingsFile = new SettingsProjectFile(type, settingsFilename); designerTypeFile.DependentUpon = settingsFile; designerTypeFile.AutoGen = true; designerTypeFile.DesignTimeSharedInput = true; settingsFile.Generator = type.IsPublic ? "PublicSettingsSingleFileGenerator" : "SettingsSingleFileGenerator"; settingsFile.LastGenOutput = designerTypeFile; files.Add(settingsFile); return designerTypeFile; } var newFilename = filenameCreator.Create(GetTypeExtension(type), type.FullName); return new TypeProjectFile(type, newFilename, options.DecompilationContext, options.Language); }
ProjectFile CreateTypeProjectFile(TypeDef type, FilenameCreator filenameCreator) { var bamlFile = TryGetBamlFile(type); if (bamlFile != null) { var filename = filenameCreator.Create(GetTypeExtension(type), type.FullName); TypeProjectFile newFile; var isAppType = DotNetUtils.IsSystemWindowsApplication(type); if (!Options.Language.CanDecompile(DecompilationType.PartialType)) { newFile = new TypeProjectFile(type, filename, Options.DecompilationContext, Options.Language, createDecompilerOutput); } else { newFile = new XamlTypeProjectFile(type, filename, Options.DecompilationContext, Options.Language, createDecompilerOutput); } newFile.DependentUpon = bamlFile; if (isAppType && DotNetUtils.IsStartUpClass(type)) { bamlFile.IsAppDef = true; StartupObject = null; } if (isAppType) { appTypeProjFile = newFile; } return(newFile); } const string DESIGNER = ".Designer"; var resxFile = TryGetResXFile(type); if (resxFile != null) { if (DotNetUtils.IsWinForm(type)) { var filename = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename)); var newFile = new WinFormsProjectFile(type, filename, Options.DecompilationContext, Options.Language, createDecompilerOutput); resxFile.DependentUpon = newFile; var dname = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename) + DESIGNER); var winFormsDesignerFile = new WinFormsDesignerProjectFile(newFile, dname, createDecompilerOutput); winFormsDesignerFile.DependentUpon = newFile; Files.Add(winFormsDesignerFile); return(newFile); } else { var filename = filenameCreator.CreateFromNamespaceName(GetTypeExtension(type), type.ReflectionNamespace, Path.GetFileNameWithoutExtension(resxFile.Filename) + DESIGNER); var newFile = new TypeProjectFile(type, filename, Options.DecompilationContext, Options.Language, createDecompilerOutput); newFile.DependentUpon = resxFile; newFile.AutoGen = true; newFile.DesignTime = true; resxFile.Generator = type.IsPublic ? "PublicResXFileCodeGenerator" : "ResXFileCodeGenerator"; resxFile.LastGenOutput = newFile; return(newFile); } } var bt = type.BaseType; if (bt != null && bt.FullName == "System.Configuration.ApplicationSettingsBase") { var designerFilename = filenameCreator.Create(DESIGNER + GetTypeExtension(type), type.FullName); var settingsFilename = filenameCreator.Create(".settings", type.FullName); ProjectFile designerTypeFile; if (Options.Language.CanDecompile(DecompilationType.PartialType)) { var typeFilename = filenameCreator.Create(GetTypeExtension(type), type.FullName); var settingsTypeFile = new SettingsTypeProjectFile(type, typeFilename, Options.DecompilationContext, Options.Language, createDecompilerOutput); designerTypeFile = new SettingsDesignerTypeProjectFile(settingsTypeFile, designerFilename, createDecompilerOutput); Files.Add(settingsTypeFile); } else { designerTypeFile = new TypeProjectFile(type, designerFilename, Options.DecompilationContext, Options.Language, createDecompilerOutput); } var settingsFile = new SettingsProjectFile(type, settingsFilename); designerTypeFile.DependentUpon = settingsFile; designerTypeFile.AutoGen = true; designerTypeFile.DesignTimeSharedInput = true; settingsFile.Generator = type.IsPublic ? "PublicSettingsSingleFileGenerator" : "SettingsSingleFileGenerator"; settingsFile.LastGenOutput = designerTypeFile; Files.Add(settingsFile); return(designerTypeFile); } var newFilename = filenameCreator.Create(GetTypeExtension(type), type.FullName); return(new TypeProjectFile(type, newFilename, Options.DecompilationContext, Options.Language, createDecompilerOutput)); }