Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1 / BamlVersionHeader.cs
/****************************************************************************\ * * File: BamlVersionHeader.cs * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.IO; using System.Globalization; using System.Diagnostics; using MS.Internal.IO.Packaging.CompoundFile; #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { internal class BamlVersionHeader { // The current BAML record version. This is incremented whenever // the BAML format changes // Baml Format Breaking Changes should change this. internal static readonly VersionPair BamlWriterVersion; static BamlVersionHeader() { // Initialize the Version number this way so that it can be // seen in the Lutz Reflector. BamlWriterVersion = new VersionPair(0, 96); } public BamlVersionHeader() { _bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion); } public FormatVersion BamlVersion { get { return _bamlVersion; } #if !PBTCOMPILER set { _bamlVersion = value; } #endif } // This is used by Async loading to measure if the whole record is present static public int BinarySerializationSize { get { // Unicode "MSBAML" = 12 // + 4 bytes length header = 12 + 4 = 16 // + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28 // For product stability the size of this data structure // shouldn't change anyway. return 28; } } #if !PBTCOMPILER internal void LoadVersion(BinaryReader bamlBinaryReader) { #if DEBUG long posStart = bamlBinaryReader.BaseStream.Position; #endif BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream); #if DEBUG long posEnd = bamlBinaryReader.BaseStream.Position; Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); #endif // We're assuming that only major versions are significant for compatibility, // so if we have a major version in the file that is higher than that in // the code, we can't read it. if (BamlVersion.ReaderVersion != BamlWriterVersion) { throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion, (BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)), (BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture)))); } } #endif internal void WriteVersion(BinaryWriter bamlBinaryWriter) { #if DEBUG long posStart = bamlBinaryWriter.BaseStream.Position; #endif BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream); #if DEBUG long posEnd = bamlBinaryWriter.BaseStream.Position; if(-1 == posStart) { long length = bamlBinaryWriter.BaseStream.Length; Debug.Assert(length == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } else { Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } #endif } FormatVersion _bamlVersion; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /****************************************************************************\ * * File: BamlVersionHeader.cs * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.IO; using System.Globalization; using System.Diagnostics; using MS.Internal.IO.Packaging.CompoundFile; #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { internal class BamlVersionHeader { // The current BAML record version. This is incremented whenever // the BAML format changes // Baml Format Breaking Changes should change this. internal static readonly VersionPair BamlWriterVersion; static BamlVersionHeader() { // Initialize the Version number this way so that it can be // seen in the Lutz Reflector. BamlWriterVersion = new VersionPair(0, 96); } public BamlVersionHeader() { _bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion); } public FormatVersion BamlVersion { get { return _bamlVersion; } #if !PBTCOMPILER set { _bamlVersion = value; } #endif } // This is used by Async loading to measure if the whole record is present static public int BinarySerializationSize { get { // Unicode "MSBAML" = 12 // + 4 bytes length header = 12 + 4 = 16 // + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28 // For product stability the size of this data structure // shouldn't change anyway. return 28; } } #if !PBTCOMPILER internal void LoadVersion(BinaryReader bamlBinaryReader) { #if DEBUG long posStart = bamlBinaryReader.BaseStream.Position; #endif BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream); #if DEBUG long posEnd = bamlBinaryReader.BaseStream.Position; Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); #endif // We're assuming that only major versions are significant for compatibility, // so if we have a major version in the file that is higher than that in // the code, we can't read it. if (BamlVersion.ReaderVersion != BamlWriterVersion) { throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion, (BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)), (BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture)))); } } #endif internal void WriteVersion(BinaryWriter bamlBinaryWriter) { #if DEBUG long posStart = bamlBinaryWriter.BaseStream.Position; #endif BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream); #if DEBUG long posEnd = bamlBinaryWriter.BaseStream.Position; if(-1 == posStart) { long length = bamlBinaryWriter.BaseStream.Length; Debug.Assert(length == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } else { Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } #endif } FormatVersion _bamlVersion; } } // 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
- GuidConverter.cs
- Identity.cs
- FirstMatchCodeGroup.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ShapeTypeface.cs
- StringKeyFrameCollection.cs
- OperationAbortedException.cs
- SessionViewState.cs
- PerfService.cs
- TableAdapterManagerHelper.cs
- KeyGesture.cs
- NativeMethodsCLR.cs
- ReflectionTypeLoadException.cs
- IMembershipProvider.cs
- CursorConverter.cs
- unsafenativemethodstextservices.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- NameNode.cs
- WebResourceUtil.cs
- CanonicalFontFamilyReference.cs
- StringConverter.cs
- Rules.cs
- DataServiceQueryException.cs
- SoapHttpTransportImporter.cs
- Line.cs
- Pen.cs
- AVElementHelper.cs
- updatecommandorderer.cs
- ModuleBuilderData.cs
- AppDomainProtocolHandler.cs
- SegmentInfo.cs
- TypeEnumerableViewSchema.cs
- XmlSortKey.cs
- DesignTimeVisibleAttribute.cs
- TcpHostedTransportConfiguration.cs
- DataControlReferenceCollection.cs
- DbModificationClause.cs
- ContextMenu.cs
- LinqDataSourceDisposeEventArgs.cs
- Internal.cs
- CallContext.cs
- EventMappingSettings.cs
- BuildProviderCollection.cs
- QueryOutputWriterV1.cs
- DocumentReferenceCollection.cs
- DataBindingExpressionBuilder.cs
- diagnosticsswitches.cs
- CompilationAssemblyInstallComponent.cs
- PrinterResolution.cs
- BindingWorker.cs
- XmlSchemaSimpleContent.cs
- Choices.cs
- PixelFormats.cs
- ErrorWebPart.cs
- ObjectStateManagerMetadata.cs
- FrameworkElementFactory.cs
- LayoutTableCell.cs
- SiteMembershipCondition.cs
- FormatPage.cs
- Header.cs
- BrowserDefinition.cs
- WindowsComboBox.cs
- GiveFeedbackEventArgs.cs
- DataGridRowDetailsEventArgs.cs
- UserControl.cs
- InvalidOperationException.cs
- SafeFileMappingHandle.cs
- ContainerUtilities.cs
- FormViewDeleteEventArgs.cs
- TextBounds.cs
- GrammarBuilderWildcard.cs
- BaseComponentEditor.cs
- MgmtResManager.cs
- RuleConditionDialog.Designer.cs
- DesignTableCollection.cs
- RuleInfoComparer.cs
- SiteMap.cs
- ListViewGroupCollectionEditor.cs
- BamlMapTable.cs
- WorkflowRuntime.cs
- PackageDigitalSignature.cs
- TreeNodeEventArgs.cs
- HMACSHA384.cs
- Crypto.cs
- QueryOperationResponseOfT.cs
- DataObjectCopyingEventArgs.cs
- NumberFormatInfo.cs
- WebPartDeleteVerb.cs
- DrawListViewColumnHeaderEventArgs.cs
- ApplicationServiceManager.cs
- ToolboxComponentsCreatedEventArgs.cs
- Suspend.cs
- DesignTimeVisibleAttribute.cs
- RegexStringValidatorAttribute.cs
- SqlCacheDependency.cs
- EdmRelationshipRoleAttribute.cs
- StringValueConverter.cs
- BufferedReadStream.cs
- ExtensibleSyndicationObject.cs
- MachineKeySection.cs