/// <summary>
        /// Initialize compiler options based on task parameters
        /// </summary>
        /// <returns>false if failed</returns>
        private bool InitializeCompiler()
        {
            switch (TargetKind)
            {
                case "exe":
                    {
                        compiler.TargetKind = System.Reflection.Emit.PEFileKinds.ConsoleApplication;
                        break;
                    }
                case "winexe":
                    {
                        compiler.TargetKind = System.Reflection.Emit.PEFileKinds.WindowApplication;
                        break;
                    }
                case "library":
                    {
                        compiler.TargetKind = System.Reflection.Emit.PEFileKinds.Dll;
                        break;
                    }
                default:
                    {
                        this.Log.LogError(Resources.InvalidTargetType, TargetKind);
                        return false;
                    }
            }
            compiler.IncludeDebugInformation = this.DebugSymbols;
            compiler.MainFile = this.MainFile;
            compiler.SourceFiles = new List<string>(this.SourceFiles);

            // References require a bit more work since our compiler expect us to pass the Assemblies (and not just paths)
            compiler.ReferencedAssemblies = new List<string>();
            foreach (ITaskItem assemblyReference in this.ReferencedAssemblies)
            {
                compiler.ReferencedAssemblies.Add(assemblyReference.ItemSpec);
            }

            // Add each resource
            List<CoreIronPython.Hosting.ResourceFile> resourcesList = new List<CoreIronPython.Hosting.ResourceFile>();
            foreach (ITaskItem resource in this.ResourceFiles)
            {
                bool publicVisibility = true;
                string access = resource.GetMetadata("Access");
                if (String.CompareOrdinal("Private", access) == 0)
                    publicVisibility = false;
                string filename = resource.ItemSpec;
                string logicalName = resource.GetMetadata("LogicalName");
                if (String.IsNullOrEmpty(logicalName))
                    logicalName = Path.GetFileName(resource.ItemSpec);

                CoreIronPython.Hosting.ResourceFile resourceFile = new CoreIronPython.Hosting.ResourceFile(logicalName, filename, publicVisibility);
                resourcesList.Add(resourceFile);
            }
            compiler.ResourceFiles = resourcesList;

            return true;
        }
Beispiel #2
0
        /// <summary>
        /// Initialize compiler options based on task parameters
        /// </summary>
        /// <returns>false if failed</returns>
        private bool InitializeCompiler()
        {
            switch (TargetKind)
            {
            case "exe":
            {
                compiler.TargetKind = System.Reflection.Emit.PEFileKinds.ConsoleApplication;
                break;
            }

            case "winexe":
            {
                compiler.TargetKind = System.Reflection.Emit.PEFileKinds.WindowApplication;
                break;
            }

            case "library":
            {
                compiler.TargetKind = System.Reflection.Emit.PEFileKinds.Dll;
                break;
            }

            default:
            {
                this.Log.LogError(Resources.InvalidTargetType, TargetKind);
                return(false);
            }
            }
            compiler.IncludeDebugInformation = this.DebugSymbols;
            compiler.MainFile    = this.MainFile;
            compiler.SourceFiles = new List <string>(this.SourceFiles);

            // References require a bit more work since our compiler expect us to pass the Assemblies (and not just paths)
            compiler.ReferencedAssemblies = new List <string>();
            foreach (ITaskItem assemblyReference in this.ReferencedAssemblies)
            {
                compiler.ReferencedAssemblies.Add(assemblyReference.ItemSpec);
            }

            // Add each resource
            List <CoreIronPython.Hosting.ResourceFile> resourcesList = new List <CoreIronPython.Hosting.ResourceFile>();

            foreach (ITaskItem resource in this.ResourceFiles)
            {
                bool   publicVisibility = true;
                string access           = resource.GetMetadata("Access");
                if (String.CompareOrdinal("Private", access) == 0)
                {
                    publicVisibility = false;
                }
                string filename    = resource.ItemSpec;
                string logicalName = resource.GetMetadata("LogicalName");
                if (String.IsNullOrEmpty(logicalName))
                {
                    logicalName = Path.GetFileName(resource.ItemSpec);
                }

                CoreIronPython.Hosting.ResourceFile resourceFile = new CoreIronPython.Hosting.ResourceFile(logicalName, filename, publicVisibility);
                resourcesList.Add(resourceFile);
            }
            compiler.ResourceFiles = resourcesList;

            return(true);
        }