internal AssemblyBuilder(CompilationSection compConfig, ICollection referencedAssemblies, CompilerType compilerType, string outputAssemblyName) { this._compConfig = compConfig; this._outputAssemblyName = outputAssemblyName; this._initialReferencedAssemblies = AssemblySet.Create(referencedAssemblies); this._compilerType = compilerType.Clone(); if (BuildManager.PrecompilingWithDebugInfo) { this._compilerType.CompilerParameters.IncludeDebugInformation = true; } else if (BuildManager.PrecompilingForDeployment) { this._compilerType.CompilerParameters.IncludeDebugInformation = false; } else if (DeploymentSection.RetailInternal) { this._compilerType.CompilerParameters.IncludeDebugInformation = false; } else if (this._compConfig.AssemblyPostProcessorTypeInternal != null) { this._compilerType.CompilerParameters.IncludeDebugInformation = true; } this._tempFiles.KeepFiles = this._compilerType.CompilerParameters.IncludeDebugInformation; this._codeProvider = CompilationUtil.CreateCodeDomProviderNonPublic(this._compilerType.CodeDomProviderType); this._maxBatchSize = this._compConfig.MaxBatchSize; this._maxBatchGeneratedFileSize = this._compConfig.MaxBatchGeneratedFileSize * 0x400; }
internal static AssemblySet Create(ICollection c) { AssemblySet set = new AssemblySet(); set.AddCollection(c); return(set); }
private void AddAssemblyDependency(Assembly assembly) { if (this._linkedAssemblies == null) { this._linkedAssemblies = new AssemblySet(); } this._linkedAssemblies.Add(assembly); }
/* * Add a set of assemblies that we must 'link' with in order to build */ private void AddAssemblyDependencies(AssemblySet assemblyDependencies) { if (assemblyDependencies == null) return; foreach (Assembly a in assemblyDependencies) AddAssemblyDependency(a); }
/* * Add an assembly that we must 'link' with in order to build */ internal void AddAssemblyDependency(Assembly assembly, bool addDependentAssemblies) { if (_assemblyDependencies == null) _assemblyDependencies = new AssemblySet(); if (_typeResolutionService != null) _typeResolutionService.ReferenceAssembly(assembly.GetName()); _assemblyDependencies.Add(assembly); // If addDependentAssemblies is true, add its dependent assemblies as well if (addDependentAssemblies) { AssemblySet assemblyDependencies = Util.GetReferencedAssemblies(assembly); AddAssemblyDependencies(assemblyDependencies); } }
/* * Return an AssemblySet which contains all the assemblies that * are referenced by the input assembly */ internal static AssemblySet GetReferencedAssemblies(Assembly a) { AssemblySet referencedAssemblies = new AssemblySet(); AssemblyName[] refs = a.GetReferencedAssemblies(); foreach (AssemblyName aname in refs) { Assembly referencedAssembly = Assembly.Load(aname); // Ignore mscorlib if (referencedAssembly == typeof(string).Assembly) continue; referencedAssemblies.Add(referencedAssembly); } return referencedAssemblies; }
/* * Return the list of assemblies that a compilation needs to reference for a given * config minus the top-level assemblies indexed later than removeIndex */ internal static ICollection GetReferencedAssemblies(CompilationSection compConfig, int removeIndex) { AssemblySet referencedAssemblies = new AssemblySet(); // Add all the config assemblies to the list foreach (AssemblyInfo a in compConfig.Assemblies) { Assembly[] assemblies = a.AssemblyInternal; if (assemblies == null) { lock (compConfig) { assemblies = a.AssemblyInternal; if (assemblies == null) // assemblies = a.AssemblyInternal = compConfig.LoadAssembly(a); } } for (int i = 0; i < assemblies.Length; i++) { if (assemblies[i] != null) { referencedAssemblies.Add(assemblies[i]); } } } // Clone the top level referenced assemblies (code + global.asax + etc...), up to the removeIndex for (int i = 0; i < removeIndex; i++) { referencedAssemblies.Add(TheBuildManager.TopLevelReferencedAssemblies[i]); } // foreach (Assembly assembly in s_dynamicallyAddedReferencedAssembly) { referencedAssemblies.Add(assembly); } return referencedAssemblies; }
internal static AssemblySet GetReferencedAssemblies(Assembly a) { AssemblySet set = new AssemblySet(); foreach (AssemblyName name in a.GetReferencedAssemblies()) { Assembly o = Assembly.Load(name); if (!(o == typeof(string).Assembly)) { set.Add(o); } } return set; }
internal static AssemblySet Create(ICollection c) { AssemblySet set = new AssemblySet(); set.AddCollection(c); return set; }
// Beginning of public contract /// <devdoc> /// Adds an assembly that will be referenced during compilation. /// </devdoc> public void AddAssemblyReference(Assembly a) { if (_additionalReferencedAssemblies == null) _additionalReferencedAssemblies = new AssemblySet(); _additionalReferencedAssemblies.Add(a); }
internal AssemblyBuilder(CompilationSection compConfig, ICollection referencedAssemblies, CompilerType compilerType, string outputAssemblyName) { _compConfig = compConfig; _outputAssemblyName = outputAssemblyName; // Clone the referenced assemblies _initialReferencedAssemblies = AssemblySet.Create(referencedAssemblies); // We need to clone it to avoid modifying the original (VSWhidbey 338935) _compilerType = compilerType.Clone(); if (BuildManager.PrecompilingWithDebugInfo) { // If the precompile flag indicates force debug, always compile as debug _compilerType.CompilerParameters.IncludeDebugInformation = true; } else if (BuildManager.PrecompilingForDeployment) { // If we're precompiling the app, never compile in debug mode (VSWhidbey 178377) _compilerType.CompilerParameters.IncludeDebugInformation = false; } else if (DeploymentSection.RetailInternal) { // If we're in retail deployment mode, always turn off debug (DevDiv 36396) _compilerType.CompilerParameters.IncludeDebugInformation = false; } else if (_compConfig.AssemblyPostProcessorTypeInternal != null) { // If an IAssemblyPostProcessor is registered always compile as debug _compilerType.CompilerParameters.IncludeDebugInformation = true; } // _tempFiles.KeepFiles = _compilerType.CompilerParameters.IncludeDebugInformation; _codeProvider = CompilationUtil.CreateCodeDomProviderNonPublic( _compilerType.CodeDomProviderType); _maxBatchSize = _compConfig.MaxBatchSize; _maxBatchGeneratedFileSize = _compConfig.MaxBatchGeneratedFileSize * 1024; }