private void Initialize()
        {
            this.projectType  = WinRTProjectTypeDetector.GetProjectType(this.assembly);
            this.dependencies = new Dictionary <string, string>();
            this.runtimes     = new List <string>();

            if (this.IsUWPProject)
            {
                TargetArchitecture architecture = this.assembly.MainModule.GetModuleArchitecture();
                if (architecture == TargetArchitecture.I386)
                {
                    this.runtimes.Add("win10-x86");
                    this.runtimes.Add("win10-x86-aot");
                }
                else if (architecture == TargetArchitecture.AMD64)
                {
                    this.runtimes.Add("win10-x64");
                    this.runtimes.Add("win10-x64-aot");
                }
                else if (architecture == TargetArchitecture.ARMv7)
                {
                    this.runtimes.Add("win10-arm");
                    this.runtimes.Add("win10-arm-aot");
                }
            }

            InitializeInstalledUAPVersions();
        }
示例#2
0
 private void Initialize()
 {
     this.projectType = WinRTProjectTypeDetector.GetProjectType(this.assembly);
     if (this.projectType == WinRTProjectType.Component || this.projectType == WinRTProjectType.ComponentForWindows)
     {
         this.platforms = new List <string>()
         {
             "Any CPU", "ARM", "x64", "x86"
         };
     }
     else if (this.projectType == WinRTProjectType.ComponentForUniversal)
     {
         this.platforms = new List <string>()
         {
             "Any CPU"
         };
     }
     else if (this.projectType == WinRTProjectType.ComponentForWindowsPhone)
     {
         this.platforms = new List <string>()
         {
             "Any CPU", "ARM", "x86"
         };
     }
     else
     {
         this.platforms = new List <string>();
     }
 }
示例#3
0
        public static ProjectGenerationSettings GetProjectGenerationSettings(string assemblyFilePath, IAssemblyInfoService assemblyInfoService,
                                                                             IFrameworkResolver frameworkResolver, VisualStudioVersion visualStudioVersion, ILanguage language, ITargetPlatformResolver targetPlatformResolver)
        {
            AssemblyDefinition assembly       = Telerik.JustDecompiler.Decompiler.Utilities.GetAssembly(assemblyFilePath);
            AssemblyInfo       assemblyInfo   = assemblyInfoService.GetAssemblyInfo(assembly, frameworkResolver, targetPlatformResolver);
            TargetPlatform     targetPlatform = GlobalAssemblyResolver.Instance.GetTargetPlatform(assemblyFilePath, targetPlatformResolver);

            foreach (KeyValuePair <ModuleDefinition, FrameworkVersion> pair in assemblyInfo.ModulesFrameworkVersions)
            {
                if (pair.Value == FrameworkVersion.Unknown)
                {
                    return(new ProjectGenerationSettings(true, ResourceStrings.GenerateOnlySourceFilesDueToUnknownFrameworkVersion, false));
                }
                else if (pair.Value == FrameworkVersion.WindowsCE ||
                         (targetPlatform == TargetPlatform.WindowsPhone && pair.Value == FrameworkVersion.WindowsPhone) ||
                         (targetPlatform == TargetPlatform.WinRT && WinRTProjectTypeDetector.GetProjectType(assembly) == WinRTProjectType.Unknown))
                {
                    return(new ProjectGenerationSettings(true, ResourceStrings.GenerateOnlySourceFilesDueToNotSupportedProjectType, false));
                }
            }

            string resultErrorMessage;

            if (visualStudioVersion == VisualStudioVersion.VS2010)
            {
                if (!CanBe2010ProjectCreated(assemblyInfo, targetPlatform, out resultErrorMessage))
                {
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }
            }
            else if (visualStudioVersion == VisualStudioVersion.VS2012)
            {
                if (!CanBe2012ProjectCreated(assembly, out resultErrorMessage))
                {
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }
            }
            else
            {
                if (targetPlatform == TargetPlatform.WinRT && language is IVisualBasic &&
                    WinRTProjectTypeDetector.GetProjectType(assembly) == WinRTProjectType.ComponentForUniversal)
                {
                    resultErrorMessage = string.Format(ResourceStrings.CannotCreateProjectForComponentForUniversalInVB, visualStudioVersion.ToFriendlyString());
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }

                if (visualStudioVersion == VisualStudioVersion.VS2013)
                {
                    if (!CanBe2013ProjectCreated(assembly, language, out resultErrorMessage))
                    {
                        return(new ProjectGenerationSettings(false, resultErrorMessage));
                    }
                }
            }

            return(new ProjectGenerationSettings(true));
        }
示例#4
0
        private static bool CanBe2013ProjectCreated(AssemblyDefinition assembly, ILanguage language, out string errorMessage)
        {
            if (WinRTProjectTypeDetector.IsUniversalWindowsPlatformAssembly(assembly))
            {
                errorMessage = string.Format(ResourceStrings.CannotCreateProjectDueToUWP, 2013);
                return(false);
            }

            errorMessage = null;
            return(true);
        }
        private static bool CanBe2012ProjectCreated(AssemblyDefinition assembly, out string errorMessage)
        {
            if (WinRTProjectTypeDetector.IsWinRTAssemblyGeneratedWithVS2013(assembly))
            {
                errorMessage = ResourceStrings.CannotCreate2012Project;
                return(false);
            }

            errorMessage = null;
            return(true);
        }
        private static bool CanBe2013ProjectCreated(AssemblyDefinition assembly, ILanguage language, out string errorMessage)
        {
            TargetPlatform targetPlatform = assembly.MainModule.AssemblyResolver.GetTargetPlatform(assembly.MainModule.FilePath);

            if (targetPlatform == TargetPlatform.WinRT && language is VisualBasic &&
                WinRTProjectTypeDetector.GetProjectType(assembly) == WinRTProjectType.ComponentForUniversal)
            {
                errorMessage = ResourceStrings.CannotCreate2013Project;
                return(false);
            }

            errorMessage = null;
            return(true);
        }
示例#7
0
        private static bool CanBe2012ProjectCreated(AssemblyDefinition assembly, out string errorMessage)
        {
            if (WinRTProjectTypeDetector.IsWinRTAssemblyGeneratedWithVS2013(assembly))
            {
                errorMessage = ResourceStrings.CannotCreate2012Project;
                return(false);
            }
            else if (WinRTProjectTypeDetector.IsUniversalWindowsPlatformAssembly(assembly))
            {
                errorMessage = string.Format(ResourceStrings.CannotCreateProjectDueToUWP, 2012);
                return(false);
            }

            errorMessage = null;
            return(true);
        }
        public static ProjectGenerationSettings GetProjectGenerationSettings(string assemblyFilePath, IAssemblyInfoService assemblyInfoService,
                                                                             IFrameworkResolver frameworkResolver, VisualStudioVersion visualStudioVersion, ILanguage language)
        {
            AssemblyDefinition assembly     = Telerik.JustDecompiler.Decompiler.Utilities.GetAssembly(assemblyFilePath);
            AssemblyInfo       assemblyInfo = assemblyInfoService.GetAssemblyInfo(assembly, frameworkResolver);

            foreach (KeyValuePair <ModuleDefinition, FrameworkVersion> pair in assemblyInfo.ModulesFrameworkVersions)
            {
                if (pair.Value == FrameworkVersion.Unknown)
                {
                    return(new ProjectGenerationSettings(true, ResourceStrings.GenerateOnlySourceFilesDueToUnknownFrameworkVersion, false));
                }
                else if (pair.Value == FrameworkVersion.WindowsCE || pair.Value == FrameworkVersion.WindowsPhone ||
                         (pair.Value == FrameworkVersion.WinRT && WinRTProjectTypeDetector.GetProjectType(assembly) == WinRTProjectType.Unknown))
                {
                    return(new ProjectGenerationSettings(true, ResourceStrings.GenerateOnlySourceFilesDueToNotSupportedProjectType, false));
                }
            }

            string resultErrorMessage;

            if (visualStudioVersion == VisualStudioVersion.VS2010)
            {
                if (!CanBe2010ProjectCreated(assemblyInfo, out resultErrorMessage))
                {
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }
            }
            else if (visualStudioVersion == VisualStudioVersion.VS2012)
            {
                if (!CanBe2012ProjectCreated(assembly, out resultErrorMessage))
                {
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }
            }
            else if (visualStudioVersion == VisualStudioVersion.VS2013)
            {
                if (!CanBe2013ProjectCreated(assembly, language, out resultErrorMessage))
                {
                    return(new ProjectGenerationSettings(false, resultErrorMessage));
                }
            }

            return(new ProjectGenerationSettings(true));
        }