Code:
/ 4.0 / 4.0 / 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.
//------------------------------------------------------------
// 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
- TextEditor.cs
- TypeLibraryHelper.cs
- ContainerSelectorBehavior.cs
- MsmqPoisonMessageException.cs
- PrimaryKeyTypeConverter.cs
- CAGDesigner.cs
- ImageButton.cs
- TraceSection.cs
- MainMenu.cs
- XmlHelper.cs
- SqlRowUpdatingEvent.cs
- SerialErrors.cs
- XamlStream.cs
- Geometry.cs
- PlainXmlSerializer.cs
- ExecutionScope.cs
- EFColumnProvider.cs
- ControlIdConverter.cs
- PriorityQueue.cs
- sqlstateclientmanager.cs
- TableSectionStyle.cs
- Path.cs
- ConnectionsZone.cs
- WebConfigurationFileMap.cs
- RootBrowserWindow.cs
- OleDbStruct.cs
- TextSelection.cs
- TypedServiceOperationListItem.cs
- VBCodeProvider.cs
- WebEvents.cs
- SqlDuplicator.cs
- SchemaElementLookUpTableEnumerator.cs
- ReverseQueryOperator.cs
- ComponentCommands.cs
- CodeCatchClause.cs
- StackBuilderSink.cs
- QilStrConcat.cs
- MediaPlayer.cs
- FastEncoderStatics.cs
- BufferModeSettings.cs
- XmlException.cs
- TextClipboardData.cs
- NavigateEvent.cs
- ModelTreeManager.cs
- RichTextBox.cs
- ElementMarkupObject.cs
- Profiler.cs
- AdRotator.cs
- MetadataItemCollectionFactory.cs
- BitSet.cs
- FontFamilyIdentifier.cs
- DropDownButton.cs
- TriggerActionCollection.cs
- ImportOptions.cs
- OracleCommandBuilder.cs
- ProtectedConfiguration.cs
- DirectoryObjectSecurity.cs
- Vector3DAnimationUsingKeyFrames.cs
- PathFigure.cs
- RewritingSimplifier.cs
- COM2EnumConverter.cs
- MenuBindingsEditorForm.cs
- Canonicalizers.cs
- ActivityPreviewDesigner.cs
- SecurityKeyUsage.cs
- ArgIterator.cs
- hresults.cs
- FontFamily.cs
- FileDataSourceCache.cs
- BamlBinaryWriter.cs
- Common.cs
- Environment.cs
- ErrorWebPart.cs
- PagerSettings.cs
- PeerObject.cs
- DataService.cs
- SmtpLoginAuthenticationModule.cs
- RowUpdatedEventArgs.cs
- Material.cs
- MatrixAnimationUsingPath.cs
- CopyAction.cs
- LongPath.cs
- RSAPKCS1SignatureFormatter.cs
- DataGridViewCellFormattingEventArgs.cs
- EntitySetBaseCollection.cs
- XmlDocumentSerializer.cs
- SqlFunctionAttribute.cs
- ByteConverter.cs
- SimpleMailWebEventProvider.cs
- XmlSecureResolver.cs
- ExceptionUtil.cs
- XmlUrlResolver.cs
- RequestResponse.cs
- Menu.cs
- InputChannelBinder.cs
- ContentElementAutomationPeer.cs
- Point3DCollectionValueSerializer.cs
- ProfileEventArgs.cs
- BitmapSizeOptions.cs
- SiteMapDataSource.cs