Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / ServiceBuildProvider.cs / 1305376 / ServiceBuildProvider.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Activation
{
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Security;
using System.Web.Compilation;
[Fx.Tag.SecurityNote(Critical = "Entry-point from asp.net, called outside PermitOnly context." +
"Also needs to elevate in order to inherit from BuildProvider and call methods on the base class.")]
#pragma warning disable 618 // have not moved to the v4 security model yet
[SecurityCritical(SecurityCriticalScope.Everything)]
#pragma warning restore 618
[BuildProviderAppliesTo(BuildProviderAppliesTo.Web)]
[ServiceActivationBuildProvider]
//class needs to be public for TypeForwarding from System.ServiceModel
public sealed class ServiceBuildProvider : BuildProvider
{
ServiceParser parser;
public override CompilerType CodeCompilerType
{
get
{
return GetCodeCompilerType();
}
}
CompilerType GetCodeCompilerType()
{
EnsureParsed();
return parser.CompilerType;
}
protected override CodeCompileUnit GetCodeCompileUnit(out IDictionary linePragmasTable)
{
CodeSnippetCompileUnit ccu = parser.GetCodeModel() as CodeSnippetCompileUnit;
linePragmasTable = parser.GetLinePragmasTable();
return ccu;
}
void EnsureParsed()
{
if (parser == null)
{
parser = new ServiceParser(VirtualPath, this);
parser.Parse(ReferencedAssemblies);
}
}
public override BuildProviderResultFlags GetResultFlags(CompilerResults results)
{
return BuildProviderResultFlags.ShutdownAppDomainOnChange;
}
public override void GenerateCode(AssemblyBuilder assemblyBuilder)
{
GenerateCodeCore(assemblyBuilder);
}
void GenerateCodeCore(AssemblyBuilder assemblyBuilder)
{
if (assemblyBuilder == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("assemblyBuilder");
}
CodeCompileUnit codeCompileUnit = parser.GetCodeModel();
// Bail if we have nothing we need to compile
//
if (codeCompileUnit == null)
return;
// Add the code unit and then add all the assemblies
//
assemblyBuilder.AddCodeCompileUnit(this, codeCompileUnit);
if (parser.AssemblyDependencies != null)
{
foreach (Assembly assembly in parser.AssemblyDependencies)
{
assemblyBuilder.AddAssemblyReference(assembly);
}
}
}
public override string GetCustomString(CompilerResults results)
{
return GetCustomStringCore(results);
}
string GetCustomStringCore(CompilerResults results)
{
return parser.CreateParseString((results == null) ? null : results.CompiledAssembly);
}
public override System.Collections.ICollection VirtualPathDependencies
{
get
{
return parser.SourceDependencies;
}
}
internal CompilerType GetDefaultCompilerTypeForLanguageInternal(string language)
{
return GetDefaultCompilerTypeForLanguage(language);
}
internal CompilerType GetDefaultCompilerTypeInternal()
{
return GetDefaultCompilerType();
}
internal TextReader OpenReaderInternal()
{
return OpenReader();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ResourceKey.cs
- HyperlinkAutomationPeer.cs
- EventInfo.cs
- StylusPointPropertyInfoDefaults.cs
- _ContextAwareResult.cs
- EventLevel.cs
- ImplicitInputBrush.cs
- AnnotationHelper.cs
- NumberAction.cs
- SimpleWebHandlerParser.cs
- LambdaCompiler.Logical.cs
- DomNameTable.cs
- HatchBrush.cs
- CompoundFileDeflateTransform.cs
- DbConnectionStringCommon.cs
- XmlSchemaObjectCollection.cs
- SimpleTypeResolver.cs
- MessageDecoder.cs
- BypassElement.cs
- TextServicesHost.cs
- MaxMessageSizeStream.cs
- SecureUICommand.cs
- AnnotationAdorner.cs
- PrimitiveXmlSerializers.cs
- SendMessageContent.cs
- EventItfInfo.cs
- TraceLevelStore.cs
- TextViewSelectionProcessor.cs
- CorrelationManager.cs
- MenuStrip.cs
- InputScope.cs
- Cursors.cs
- LeafCellTreeNode.cs
- PeerNameRecord.cs
- ModuleElement.cs
- RoleManagerModule.cs
- TextHidden.cs
- DesigntimeLicenseContextSerializer.cs
- TemplateEditingService.cs
- RightsManagementPermission.cs
- Properties.cs
- Visitors.cs
- DbXmlEnabledProviderManifest.cs
- XmlSchemaAnnotation.cs
- DataGridItemEventArgs.cs
- PluralizationServiceUtil.cs
- ProxyManager.cs
- XmlWrappingReader.cs
- TypeUsage.cs
- GenericUriParser.cs
- WsiProfilesElementCollection.cs
- OrderingExpression.cs
- DescriptionAttribute.cs
- SamlSerializer.cs
- ListBase.cs
- ArrayWithOffset.cs
- TreeNodeStyleCollection.cs
- SafeBuffer.cs
- CreateInstanceBinder.cs
- SchemaLookupTable.cs
- SqlProviderUtilities.cs
- StreamGeometry.cs
- Logging.cs
- XmlSecureResolver.cs
- RotateTransform3D.cs
- MapPathBasedVirtualPathProvider.cs
- StringTraceRecord.cs
- Content.cs
- TextTreeUndo.cs
- DictionaryBase.cs
- EventLogLink.cs
- QilLoop.cs
- ZipIOBlockManager.cs
- DependencyPropertyValueSerializer.cs
- ResourceDisplayNameAttribute.cs
- InternalDispatchObject.cs
- HashSetEqualityComparer.cs
- StatusBarPanel.cs
- DataGridHelper.cs
- _SslState.cs
- Hyperlink.cs
- FunctionNode.cs
- OleDbParameterCollection.cs
- Span.cs
- HostingEnvironmentSection.cs
- WindowInteropHelper.cs
- XmlCharCheckingWriter.cs
- ConstructorExpr.cs
- AsmxEndpointPickerExtension.cs
- Type.cs
- Decoder.cs
- RuntimeCompatibilityAttribute.cs
- CacheDependency.cs
- AuthenticationServiceManager.cs
- BindingBase.cs
- TriggerAction.cs
- HttpHandlerActionCollection.cs
- TableAdapterManagerGenerator.cs
- SystemIPGlobalStatistics.cs
- TrackBarDesigner.cs