Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Compilation / XsdBuildProvider.cs / 1 / 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 (VSWhidbey 566286)
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.
//
//-----------------------------------------------------------------------------
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 (VSWhidbey 566286)
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SiteMapProvider.cs
- OpenTypeCommon.cs
- DPTypeDescriptorContext.cs
- ImageFormat.cs
- ProtocolsConfigurationEntry.cs
- SoapIgnoreAttribute.cs
- _AutoWebProxyScriptHelper.cs
- ToolboxSnapDragDropEventArgs.cs
- RightsManagementEncryptedStream.cs
- Button.cs
- SignatureConfirmationElement.cs
- _AutoWebProxyScriptEngine.cs
- TokenBasedSetEnumerator.cs
- HtmlImage.cs
- ListViewGroupConverter.cs
- ADMembershipProvider.cs
- XmlAtomErrorReader.cs
- HMAC.cs
- StylusPlugInCollection.cs
- ObjectConverter.cs
- ConstrainedDataObject.cs
- ServiceInfo.cs
- DictionaryEntry.cs
- ObjectTypeMapping.cs
- ProfileServiceManager.cs
- Line.cs
- ActivityExecutorDelegateInfo.cs
- InstanceData.cs
- IgnoreSection.cs
- _IPv6Address.cs
- ChtmlTextWriter.cs
- SoapSchemaImporter.cs
- OutputCacheModule.cs
- StrongNameIdentityPermission.cs
- CommandLibraryHelper.cs
- DateTimeUtil.cs
- EntityConnectionStringBuilder.cs
- CheckBoxBaseAdapter.cs
- InputEventArgs.cs
- StatusBarDrawItemEvent.cs
- ClosableStream.cs
- ModifiableIteratorCollection.cs
- WindowsPrincipal.cs
- Grant.cs
- AnonymousIdentificationSection.cs
- WebConfigurationFileMap.cs
- RouteParametersHelper.cs
- Single.cs
- DoubleCollection.cs
- SqlCommandBuilder.cs
- CollectionBuilder.cs
- AutomationProperty.cs
- StateMachine.cs
- StringUtil.cs
- FixedStringLookup.cs
- DropDownButton.cs
- EventLogPermissionAttribute.cs
- GetPageCompletedEventArgs.cs
- IndentedWriter.cs
- XMLSchema.cs
- NameNode.cs
- AutomationEventArgs.cs
- RecordsAffectedEventArgs.cs
- PropertyMappingExceptionEventArgs.cs
- ProcessModelSection.cs
- CharAnimationUsingKeyFrames.cs
- CustomAssemblyResolver.cs
- AlphabeticalEnumConverter.cs
- SafeRightsManagementQueryHandle.cs
- CommentGlyph.cs
- TrackingDataItemValue.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- ProcessModelSection.cs
- XmlHelper.cs
- StatusBarItem.cs
- ProfessionalColorTable.cs
- ScriptingAuthenticationServiceSection.cs
- ColumnMapCopier.cs
- DispatcherTimer.cs
- ResourcePermissionBase.cs
- NestedContainer.cs
- GridItemProviderWrapper.cs
- HtmlElementEventArgs.cs
- nulltextcontainer.cs
- ThousandthOfEmRealPoints.cs
- TypeConstant.cs
- RenderOptions.cs
- ExtensionSimplifierMarkupObject.cs
- FloatAverageAggregationOperator.cs
- TagMapCollection.cs
- TypeDescriptorContext.cs
- StreamInfo.cs
- __Filters.cs
- ChangeNode.cs
- SqlAliaser.cs
- CaseExpr.cs
- GenericEnumerator.cs
- BitStream.cs
- HitTestDrawingContextWalker.cs
- SoapCodeExporter.cs