private static bool CanBe2010ProjectCreated(AssemblyInfo assemblyInfo, out string errorMessage) { Version max = new Version(0, 0); foreach (KeyValuePair<ModuleDefinition, FrameworkVersion> pair in assemblyInfo.ModulesFrameworkVersions) { if (pair.Value == FrameworkVersion.WinRT) { errorMessage = ResourceStrings.CannotCreate2010ProjectDueToWinRT; return false; } else if (pair.Value == FrameworkVersion.Silverlight) { continue; } Version current = new Version(pair.Value.ToString(false)); if (current > max) { max = current; } } if (max > new Version(4, 0)) { errorMessage = ResourceStrings.CannotCreate2010ProjectDueToFramework45; return false; } else { errorMessage = null; return true; } }
protected virtual void AddModulesFrameworkVersions(AssemblyInfo assemblyInfo, AssemblyDefinition assembly, IFrameworkResolver frameworkResolver) { foreach (ModuleDefinition module in assembly.Modules) { FrameworkVersion frameworkVersion = GetFrameworkVersionForModule(module, frameworkResolver); assemblyInfo.ModulesFrameworkVersions.Add(module, frameworkVersion); } }
public AssemblyInfo GetAssemblyInfo(AssemblyDefinition assembly, IFrameworkResolver frameworkResolver) { AssemblyInfo assemblyInfo = new AssemblyInfo(); AddModulesFrameworkVersions(assemblyInfo, assembly, frameworkResolver); return assemblyInfo; }
public const int MaxPathLength = 259; // 259 + NULL == 260 public MSBuildProjectBuilder(string assemblyPath, AssemblyDefinition assembly, Dictionary<ModuleDefinition, Mono.Collections.Generic.Collection<TypeDefinition>> userDefinedTypes, Dictionary<ModuleDefinition, Mono.Collections.Generic.Collection<Resource>> resources, string targetPath, ILanguage language, IFrameworkResolver frameworkResolver, IDecompilationPreferences preferences, IAssemblyInfoService assemblyInfoService, VisualStudioVersion visualStudioVersion = VisualStudioVersion.VS2010, ProjectGenerationSettings projectGenerationSettings = null, IProjectGenerationNotifier projectNotifier = null) { this.assemblyPath = assemblyPath; this.assembly = assembly; this.userDefinedTypes = userDefinedTypes; this.resources = resources; this.TargetPath = targetPath; this.targetDir = Path.GetDirectoryName(targetPath); this.language = language; this.frameworkResolver = frameworkResolver; this.assemblyInfoService = assemblyInfoService; this.visualStudioVersion = visualStudioVersion; this.projectGenerationSettings = projectGenerationSettings; this.currentAssemblyResolver = assembly.MainModule.AssemblyResolver; this.decompilationPreferences = preferences; platform = currentAssemblyResolver.GetTargetPlatform(assembly.MainModule.FilePath); namespaceHierarchyTree = assembly.BuildNamespaceHierarchyTree(); filePathsService = new DefaultFilePathsService( this.assembly, this.assemblyPath, Path.GetFileName(this.TargetPath), this.UserDefinedTypes, this.Resources, namespaceHierarchyTree, this.language, Utilities.GetMaxRelativePathLength(targetPath)); this.modulesToProjectsFilePathsMap = this.filePathsService.GetModulesToProjectsFilePathsMap(); this.resourcesToPathsMap = this.filePathsService.GetResourcesToFilePathsMap(); this.xamlResourcesToPathsMap = this.filePathsService.GetXamlResourcesToFilePathsMap(); this.assemblyInfo = GetAssemblyInfo(); this.projectNotifier = projectNotifier; }
public MSBuildProjectBuilder(string assemblyPath, string targetPath, ILanguage language, IFrameworkResolver frameworkResolver,IDecompilationPreferences preferences, IFileGenerationNotifier notifier, IAssemblyInfoService assemblyInfoService, VisualStudioVersion visualStudioVersion = VisualStudioVersion.VS2010, ProjectGenerationSettings projectGenerationSettings = null, IProjectGenerationNotifier projectNotifier = null) { this.assemblyPath = assemblyPath; this.TargetPath = targetPath; this.targetDir = Path.GetDirectoryName(targetPath); this.language = language; this.frameworkResolver = frameworkResolver; this.decompilationPreferences = preferences; this.assemblyInfoService = assemblyInfoService; this.visualStudioVersion = visualStudioVersion; this.projectGenerationSettings = projectGenerationSettings; this.currentAssemblyResolver = new WeakAssemblyResolver(GlobalAssemblyResolver.CurrentAssemblyPathCache); var readerParameters = new ReaderParameters(currentAssemblyResolver); assembly = currentAssemblyResolver.LoadAssemblyDefinition(assemblyPath, readerParameters, loadPdb: true); platform = currentAssemblyResolver.GetTargetPlatform(assemblyPath); namespaceHierarchyTree = assembly.BuildNamespaceHierarchyTree(); filePathsService = new DefaultFilePathsService( this.assembly, this.assemblyPath, Path.GetFileName(this.TargetPath), this.UserDefinedTypes, this.Resources, namespaceHierarchyTree, this.language, Utilities.GetMaxRelativePathLength(targetPath)); this.modulesToProjectsFilePathsMap = this.filePathsService.GetModulesToProjectsFilePathsMap(); this.resourcesToPathsMap = this.filePathsService.GetResourcesToFilePathsMap(); this.xamlResourcesToPathsMap = this.filePathsService.GetXamlResourcesToFilePathsMap(); this.fileGeneratedNotifier = notifier; this.assemblyInfo = GetAssemblyInfo(); this.projectNotifier = projectNotifier; }
protected virtual void AddAssemblyTypes(AssemblyInfo assemblyInfo, AssemblyDefinition assembly) { assemblyInfo.AssemblyTypes = GetAssemblyTypes(assembly); }