Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / WebReferencesBuildProvider.cs / 1305376 / WebReferencesBuildProvider.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Globalization; using System.CodeDom; using System.CodeDom.Compiler; using System.Collections.Specialized; using System.Net; using System.Xml.Serialization; #if !FEATURE_PAL using System.Web.Services.Description; using System.Web.Services.Discovery; #endif // !FEATURE_PAL using System.Web.Hosting; using System.Web.UI; using System.Web.Util; using Util=System.Web.UI.Util; internal class WebReferencesBuildProvider: BuildProvider { private VirtualDirectory _vdir; private const string IndigoWebRefProviderTypeName = "System.Web.Compilation.WCFBuildProvider"; private static Type s_indigoWebRefProviderType; private static bool s_triedToGetWebRefType; internal WebReferencesBuildProvider(VirtualDirectory vdir) { _vdir = vdir; } public override void GenerateCode(AssemblyBuilder assemblyBuilder) { // Only attempt to get the Indigo provider once if (!s_triedToGetWebRefType) { s_indigoWebRefProviderType = BuildManager.GetType(IndigoWebRefProviderTypeName, false /*throwOnError*/); s_triedToGetWebRefType = true; } // If we have an Indigo provider, instantiate it and forward the GenerateCode call to it if (s_indigoWebRefProviderType != null) { BuildProvider buildProvider = (BuildProvider)HttpRuntime.CreateNonPublicInstance(s_indigoWebRefProviderType); buildProvider.SetVirtualPath(VirtualPathObject); buildProvider.GenerateCode(assemblyBuilder); } // e.g "/MyApp/Application_WebReferences" VirtualPath rootWebRefDirVirtualPath = HttpRuntime.WebRefDirectoryVirtualPath; // e.g "/MyApp/Application_WebReferences/Foo/Bar" string currentWebRefDirVirtualPath = _vdir.VirtualPath; Debug.Assert(StringUtil.StringStartsWithIgnoreCase( currentWebRefDirVirtualPath, rootWebRefDirVirtualPath.VirtualPathString)); string ns; if (rootWebRefDirVirtualPath.VirtualPathString.Length == currentWebRefDirVirtualPath.Length) { // If it's the root WebReferences dir, use the empty namespace ns = String.Empty; } else { // e.g. "Foo/Bar" Debug.Assert(rootWebRefDirVirtualPath.HasTrailingSlash); currentWebRefDirVirtualPath = UrlPath.RemoveSlashFromPathIfNeeded(currentWebRefDirVirtualPath); currentWebRefDirVirtualPath = currentWebRefDirVirtualPath.Substring( rootWebRefDirVirtualPath.VirtualPathString.Length); // Split it into chunks separated by '/' string[] chunks = currentWebRefDirVirtualPath.Split('/'); // Turn all the relevant chunks into valid namespace chunks for (int i=0; i// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Globalization; using System.CodeDom; using System.CodeDom.Compiler; using System.Collections.Specialized; using System.Net; using System.Xml.Serialization; #if !FEATURE_PAL using System.Web.Services.Description; using System.Web.Services.Discovery; #endif // !FEATURE_PAL using System.Web.Hosting; using System.Web.UI; using System.Web.Util; using Util=System.Web.UI.Util; internal class WebReferencesBuildProvider: BuildProvider { private VirtualDirectory _vdir; private const string IndigoWebRefProviderTypeName = "System.Web.Compilation.WCFBuildProvider"; private static Type s_indigoWebRefProviderType; private static bool s_triedToGetWebRefType; internal WebReferencesBuildProvider(VirtualDirectory vdir) { _vdir = vdir; } public override void GenerateCode(AssemblyBuilder assemblyBuilder) { // Only attempt to get the Indigo provider once if (!s_triedToGetWebRefType) { s_indigoWebRefProviderType = BuildManager.GetType(IndigoWebRefProviderTypeName, false /*throwOnError*/); s_triedToGetWebRefType = true; } // If we have an Indigo provider, instantiate it and forward the GenerateCode call to it if (s_indigoWebRefProviderType != null) { BuildProvider buildProvider = (BuildProvider)HttpRuntime.CreateNonPublicInstance(s_indigoWebRefProviderType); buildProvider.SetVirtualPath(VirtualPathObject); buildProvider.GenerateCode(assemblyBuilder); } // e.g "/MyApp/Application_WebReferences" VirtualPath rootWebRefDirVirtualPath = HttpRuntime.WebRefDirectoryVirtualPath; // e.g "/MyApp/Application_WebReferences/Foo/Bar" string currentWebRefDirVirtualPath = _vdir.VirtualPath; Debug.Assert(StringUtil.StringStartsWithIgnoreCase( currentWebRefDirVirtualPath, rootWebRefDirVirtualPath.VirtualPathString)); string ns; if (rootWebRefDirVirtualPath.VirtualPathString.Length == currentWebRefDirVirtualPath.Length) { // If it's the root WebReferences dir, use the empty namespace ns = String.Empty; } else { // e.g. "Foo/Bar" Debug.Assert(rootWebRefDirVirtualPath.HasTrailingSlash); currentWebRefDirVirtualPath = UrlPath.RemoveSlashFromPathIfNeeded(currentWebRefDirVirtualPath); currentWebRefDirVirtualPath = currentWebRefDirVirtualPath.Substring( rootWebRefDirVirtualPath.VirtualPathString.Length); // Split it into chunks separated by '/' string[] chunks = currentWebRefDirVirtualPath.Split('/'); // Turn all the relevant chunks into valid namespace chunks for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DirectionalLight.cs
- LinqTreeNodeEvaluator.cs
- SystemTcpConnection.cs
- InputScopeAttribute.cs
- SystemDropShadowChrome.cs
- LabelLiteral.cs
- GeometryHitTestResult.cs
- ListViewDesigner.cs
- KnownTypes.cs
- IsolatedStorageFile.cs
- InvalidCommandTreeException.cs
- PipelineModuleStepContainer.cs
- XhtmlBasicCommandAdapter.cs
- FormViewUpdateEventArgs.cs
- GlyphRunDrawing.cs
- HotSpotCollection.cs
- DecimalAnimationBase.cs
- WsdlExporter.cs
- BCLDebug.cs
- securitycriticaldataformultiplegetandset.cs
- Rule.cs
- ConstraintEnumerator.cs
- ForwardPositionQuery.cs
- ResourceDescriptionAttribute.cs
- FlowDocumentPage.cs
- SettingsBase.cs
- basemetadatamappingvisitor.cs
- LinqToSqlWrapper.cs
- ReadOnlyDictionary.cs
- DeflateStreamAsyncResult.cs
- BindingBase.cs
- _TLSstream.cs
- WmfPlaceableFileHeader.cs
- ScriptManager.cs
- TdsEnums.cs
- Label.cs
- SaveRecipientRequest.cs
- RawStylusSystemGestureInputReport.cs
- ZoneLinkButton.cs
- EnumerableWrapperWeakToStrong.cs
- GridEntry.cs
- WorkItem.cs
- Environment.cs
- XPathSingletonIterator.cs
- SHA256Cng.cs
- ProcessManager.cs
- SafeReversePInvokeHandle.cs
- RenderTargetBitmap.cs
- DBNull.cs
- CodeArrayCreateExpression.cs
- XamlSerializer.cs
- AncestorChangedEventArgs.cs
- NameTable.cs
- Vars.cs
- SmtpNegotiateAuthenticationModule.cs
- WebMessageEncoderFactory.cs
- Permission.cs
- IPHostEntry.cs
- BooleanConverter.cs
- ReferenceConverter.cs
- Single.cs
- RequiredFieldValidator.cs
- WebServiceClientProxyGenerator.cs
- XmlUtf8RawTextWriter.cs
- Opcode.cs
- MethodCallConverter.cs
- TableCellsCollectionEditor.cs
- _ShellExpression.cs
- Int32CollectionConverter.cs
- RoutedPropertyChangedEventArgs.cs
- WebConfigurationHostFileChange.cs
- GPStream.cs
- EdgeModeValidation.cs
- ToggleButtonAutomationPeer.cs
- UnSafeCharBuffer.cs
- SqlVisitor.cs
- EventRouteFactory.cs
- ExitEventArgs.cs
- OverflowException.cs
- selecteditemcollection.cs
- XPathDocumentIterator.cs
- XmlStringTable.cs
- XmlEntity.cs
- DoubleConverter.cs
- MemberHolder.cs
- IssuedTokenServiceElement.cs
- HttpModuleActionCollection.cs
- Drawing.cs
- ClassHandlersStore.cs
- IgnorePropertiesAttribute.cs
- TopClause.cs
- SendDesigner.xaml.cs
- Queue.cs
- UnmanagedMarshal.cs
- AttributeSetAction.cs
- _ChunkParse.cs
- ProxyManager.cs
- FontFamily.cs
- ScriptRef.cs
- AxHost.cs