Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / XsdBuildProvider.cs / 3 / XsdBuildProvider.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.IO;
using System.Data;
using System.Data.Design;
using System.Globalization;
using System.Xml;
using System.Xml.Schema;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Hosting;
using System.Web.Configuration;
using System.Collections;
using Util=System.Web.UI.Util;
#if !FEATURE_PAL // FEATURE_PAL does not support System.Data.Design
using TypedDataSetGenerator=System.Data.Design.TypedDataSetGenerator;
#endif // !FEATURE_PAL
[BuildProviderAppliesTo(BuildProviderAppliesTo.Code)]
internal class XsdBuildProvider: BuildProvider {
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
#if !FEATURE_PAL // FEATURE_PAL does not support System.Data.Design
// Get the namespace that we will use
string ns = Util.GetNamespaceFromVirtualPath(VirtualPathObject);
// We need to use XmlDocument to parse the xsd file is order to open it with the
// correct encoding (
XmlDocument doc = new XmlDocument();
using (Stream stream = OpenStream()) {
doc.Load(stream);
}
String content = doc.OuterXml;
// Generate a CodeCompileUnit from the dataset
CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
CodeNamespace codeNamespace = new CodeNamespace(ns);
codeCompileUnit.Namespaces.Add(codeNamespace);
// Devdiv 18365
// Call a different Generate method if compiler version is v3.5
bool isVer35 = CompilationUtil.IsCompilerVersion35(assemblyBuilder.CodeDomProvider.GetType());
if (isVer35) {
TypedDataSetGenerator.GenerateOption generateOptions = TypedDataSetGenerator.GenerateOption.None;
generateOptions |= TypedDataSetGenerator.GenerateOption.HierarchicalUpdate;
generateOptions |= TypedDataSetGenerator.GenerateOption.LinqOverTypedDatasets;
Hashtable customDBProviders = null;
TypedDataSetGenerator.Generate(content, codeCompileUnit, codeNamespace, assemblyBuilder.CodeDomProvider, customDBProviders, generateOptions);
}
else {
TypedDataSetGenerator.Generate(content, codeCompileUnit, codeNamespace, assemblyBuilder.CodeDomProvider);
}
// Add all the assembly references needed by the generated code
if (TypedDataSetGenerator.ReferencedAssemblies != null) {
foreach (Assembly a in TypedDataSetGenerator.ReferencedAssemblies) {
assemblyBuilder.AddAssemblyReference(a);
}
}
// Add the CodeCompileUnit to the compilation
assemblyBuilder.AddCodeCompileUnit(this, codeCompileUnit);
#else // !FEATURE_PAL
throw new NotImplementedException("System.Data.Design - ROTORTODO");
#endif // !FEATURE_PAL
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.IO;
using System.Data;
using System.Data.Design;
using System.Globalization;
using System.Xml;
using System.Xml.Schema;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Hosting;
using System.Web.Configuration;
using System.Collections;
using Util=System.Web.UI.Util;
#if !FEATURE_PAL // FEATURE_PAL does not support System.Data.Design
using TypedDataSetGenerator=System.Data.Design.TypedDataSetGenerator;
#endif // !FEATURE_PAL
[BuildProviderAppliesTo(BuildProviderAppliesTo.Code)]
internal class XsdBuildProvider: BuildProvider {
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
#if !FEATURE_PAL // FEATURE_PAL does not support System.Data.Design
// Get the namespace that we will use
string ns = Util.GetNamespaceFromVirtualPath(VirtualPathObject);
// We need to use XmlDocument to parse the xsd file is order to open it with the
// correct encoding (
XmlDocument doc = new XmlDocument();
using (Stream stream = OpenStream()) {
doc.Load(stream);
}
String content = doc.OuterXml;
// Generate a CodeCompileUnit from the dataset
CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
CodeNamespace codeNamespace = new CodeNamespace(ns);
codeCompileUnit.Namespaces.Add(codeNamespace);
// Devdiv 18365
// Call a different Generate method if compiler version is v3.5
bool isVer35 = CompilationUtil.IsCompilerVersion35(assemblyBuilder.CodeDomProvider.GetType());
if (isVer35) {
TypedDataSetGenerator.GenerateOption generateOptions = TypedDataSetGenerator.GenerateOption.None;
generateOptions |= TypedDataSetGenerator.GenerateOption.HierarchicalUpdate;
generateOptions |= TypedDataSetGenerator.GenerateOption.LinqOverTypedDatasets;
Hashtable customDBProviders = null;
TypedDataSetGenerator.Generate(content, codeCompileUnit, codeNamespace, assemblyBuilder.CodeDomProvider, customDBProviders, generateOptions);
}
else {
TypedDataSetGenerator.Generate(content, codeCompileUnit, codeNamespace, assemblyBuilder.CodeDomProvider);
}
// Add all the assembly references needed by the generated code
if (TypedDataSetGenerator.ReferencedAssemblies != null) {
foreach (Assembly a in TypedDataSetGenerator.ReferencedAssemblies) {
assemblyBuilder.AddAssemblyReference(a);
}
}
// Add the CodeCompileUnit to the compilation
assemblyBuilder.AddCodeCompileUnit(this, codeCompileUnit);
#else // !FEATURE_PAL
throw new NotImplementedException("System.Data.Design - ROTORTODO");
#endif // !FEATURE_PAL
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SourceSwitch.cs
- IgnoreSectionHandler.cs
- Soap11ServerProtocol.cs
- TemplatedWizardStep.cs
- CodeValidator.cs
- EventLogTraceListener.cs
- SqlDataReader.cs
- RtfControls.cs
- NavigationPropertyEmitter.cs
- ControlBindingsCollection.cs
- PreDigestedSignedInfo.cs
- SimpleHandlerBuildProvider.cs
- IsolatedStorageSecurityState.cs
- LocalizationComments.cs
- EdmSchemaAttribute.cs
- SqlNodeTypeOperators.cs
- PassportAuthentication.cs
- ProjectionRewriter.cs
- VerticalConnector.xaml.cs
- BindingExpressionBase.cs
- StylusPointPropertyUnit.cs
- XmlILTrace.cs
- ReferenceConverter.cs
- SqlMethodAttribute.cs
- EntityExpressionVisitor.cs
- TransactionState.cs
- UnconditionalPolicy.cs
- AccessedThroughPropertyAttribute.cs
- HostedBindingBehavior.cs
- Context.cs
- Stroke2.cs
- SqlInternalConnectionTds.cs
- XPathAxisIterator.cs
- EdmToObjectNamespaceMap.cs
- SqlFunctions.cs
- SetIndexBinder.cs
- odbcmetadatacollectionnames.cs
- SynchronizationLockException.cs
- ExpandedProjectionNode.cs
- SchemaCollectionPreprocessor.cs
- WinEventTracker.cs
- PropertyTab.cs
- ILGenerator.cs
- ViewStateModeByIdAttribute.cs
- brushes.cs
- SqlConnectionString.cs
- JoinCqlBlock.cs
- ChtmlTextWriter.cs
- TypeToken.cs
- COM2ColorConverter.cs
- DataBindingList.cs
- UnitySerializationHolder.cs
- SqlClientMetaDataCollectionNames.cs
- TemplateControlBuildProvider.cs
- Stack.cs
- BindingMAnagerBase.cs
- RectIndependentAnimationStorage.cs
- SafeCryptoHandles.cs
- SerializationInfo.cs
- PointF.cs
- CopyOnWriteList.cs
- TextSelectionHighlightLayer.cs
- HttpClientCertificate.cs
- ZoneLinkButton.cs
- XmlDownloadManager.cs
- entityreference_tresulttype.cs
- IdentityValidationException.cs
- DbBuffer.cs
- ECDiffieHellmanCng.cs
- RepeaterItem.cs
- Int32CAMarshaler.cs
- TempEnvironment.cs
- DeclarativeCatalogPart.cs
- TabletDevice.cs
- PropertyChangeTracker.cs
- SafeThemeHandle.cs
- ObjectIDGenerator.cs
- PartitionedStreamMerger.cs
- ClrProviderManifest.cs
- SerializationFieldInfo.cs
- VariableModifiersHelper.cs
- SafeFileMapViewHandle.cs
- InternalControlCollection.cs
- FixedSOMSemanticBox.cs
- DataMemberListEditor.cs
- HttpProfileGroupBase.cs
- WebScriptServiceHostFactory.cs
- GridViewRowEventArgs.cs
- TextHidden.cs
- ResourceContainer.cs
- DrawingVisual.cs
- SortedList.cs
- QuotedPrintableStream.cs
- SchemaTypeEmitter.cs
- SimpleMailWebEventProvider.cs
- DefaultValueTypeConverter.cs
- CustomCredentialPolicy.cs
- SortedList.cs
- KeyboardNavigation.cs
- MatrixTransform3D.cs