Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / Compilation / WebReferencesBuildProvider.cs / 1 / 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
- WindowsSpinner.cs
- BitConverter.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- Soap.cs
- SubpageParagraph.cs
- PositiveTimeSpanValidator.cs
- ThumbAutomationPeer.cs
- TokenDescriptor.cs
- WebEvents.cs
- WebChannelFactory.cs
- IdentifierService.cs
- TypeGeneratedEventArgs.cs
- TagPrefixInfo.cs
- Image.cs
- ColorConverter.cs
- ContractMapping.cs
- Attributes.cs
- EncryptedKeyHashIdentifierClause.cs
- ObjectItemCollection.cs
- TypeUsageBuilder.cs
- OleDbSchemaGuid.cs
- TaskFileService.cs
- GetPageCompletedEventArgs.cs
- PresentationSource.cs
- ACL.cs
- InputElement.cs
- GridViewColumnCollection.cs
- URIFormatException.cs
- SvcMapFileSerializer.cs
- CompositeCollection.cs
- Italic.cs
- GPRECT.cs
- As.cs
- ColorConvertedBitmap.cs
- SecureEnvironment.cs
- IntranetCredentialPolicy.cs
- SystemWebSectionGroup.cs
- MdiWindowListStrip.cs
- OutputCacheSettingsSection.cs
- FrugalList.cs
- FindSimilarActivitiesVerb.cs
- MultiView.cs
- ControlCachePolicy.cs
- SqlDataSourceStatusEventArgs.cs
- ManagedIStream.cs
- AuthorizationRule.cs
- EntityClassGenerator.cs
- CodeIndexerExpression.cs
- GlyphRunDrawing.cs
- FocusChangedEventArgs.cs
- ModelTypeConverter.cs
- MatrixTransform.cs
- Drawing.cs
- TabItemAutomationPeer.cs
- PathStreamGeometryContext.cs
- WebUtil.cs
- AdornerHitTestResult.cs
- SystemResourceKey.cs
- HtmlTitle.cs
- PolygonHotSpot.cs
- StrongNameKeyPair.cs
- CodeMemberMethod.cs
- FixedDocument.cs
- SqlDataSourceFilteringEventArgs.cs
- RegionIterator.cs
- WorkflowServiceHostFactory.cs
- HtmlWindowCollection.cs
- SqlVersion.cs
- SessionState.cs
- XhtmlBasicLiteralTextAdapter.cs
- StylusButtonEventArgs.cs
- RuleInfoComparer.cs
- KnownColorTable.cs
- grammarelement.cs
- EncoderParameter.cs
- TypeLoadException.cs
- DataBindingHandlerAttribute.cs
- SafeNativeMethods.cs
- InternalBufferOverflowException.cs
- ObjectViewQueryResultData.cs
- Pkcs7Signer.cs
- LinkedDataMemberFieldEditor.cs
- ExpressionBuilderContext.cs
- BindableTemplateBuilder.cs
- AspCompat.cs
- XmlRootAttribute.cs
- SettingsPropertyValue.cs
- SelectedDatesCollection.cs
- altserialization.cs
- TargetPerspective.cs
- HtmlPageAdapter.cs
- AnnotationResourceCollection.cs
- MultiPropertyDescriptorGridEntry.cs
- FixedFlowMap.cs
- HttpProfileGroupBase.cs
- TypeValidationEventArgs.cs
- RotationValidation.cs
- PathGeometry.cs
- ProfileInfo.cs
- FunctionQuery.cs