Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1305600 / 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
- SQLDoubleStorage.cs
- Translator.cs
- DataKey.cs
- ExitEventArgs.cs
- _ListenerAsyncResult.cs
- TreeNodeBinding.cs
- CqlErrorHelper.cs
- TextParaClient.cs
- XmlKeywords.cs
- MailWriter.cs
- Utils.cs
- WebErrorHandler.cs
- BufferedReadStream.cs
- PrintPreviewDialog.cs
- externdll.cs
- SoapCodeExporter.cs
- DataError.cs
- SchemaConstraints.cs
- oledbmetadatacolumnnames.cs
- VisualTreeUtils.cs
- WebPartDescription.cs
- RecipientInfo.cs
- FixedSOMFixedBlock.cs
- TransformerConfigurationWizardBase.cs
- IPAddressCollection.cs
- UserControl.cs
- NativeMethods.cs
- NameValueSectionHandler.cs
- __Filters.cs
- FileCodeGroup.cs
- NativeMethodsOther.cs
- webeventbuffer.cs
- EllipseGeometry.cs
- HttpWebRequest.cs
- ColumnResult.cs
- DataGridViewCellEventArgs.cs
- NavigationProperty.cs
- CommonDialog.cs
- TCPClient.cs
- SafeBitVector32.cs
- InProcStateClientManager.cs
- HatchBrush.cs
- FrugalMap.cs
- SafeRegistryHandle.cs
- PreviewPrintController.cs
- DataServiceHost.cs
- TextRangeEdit.cs
- ConnectionOrientedTransportChannelFactory.cs
- CompilerLocalReference.cs
- NativeObjectSecurity.cs
- VirtualizingPanel.cs
- ReverseComparer.cs
- ValidationEventArgs.cs
- UInt64Converter.cs
- MaterializeFromAtom.cs
- URLMembershipCondition.cs
- CustomAttributeBuilder.cs
- BaseUriHelper.cs
- Pick.cs
- SoapObjectWriter.cs
- InputMethodStateChangeEventArgs.cs
- ConditionalAttribute.cs
- MaterializeFromAtom.cs
- LinqDataSourceStatusEventArgs.cs
- TextEvent.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- FigureParagraph.cs
- Triplet.cs
- Pkcs7Signer.cs
- SmtpException.cs
- IOThreadTimer.cs
- DataFormat.cs
- DataGridViewRowHeaderCell.cs
- WindowsTokenRoleProvider.cs
- EnvironmentPermission.cs
- sqlser.cs
- ProfilePropertyNameValidator.cs
- DbReferenceCollection.cs
- SizeF.cs
- ListControlConvertEventArgs.cs
- CroppedBitmap.cs
- PointAnimation.cs
- Rotation3DKeyFrameCollection.cs
- Int32Collection.cs
- FileUpload.cs
- FamilyMap.cs
- PeerApplicationLaunchInfo.cs
- IIS7UserPrincipal.cs
- ServiceModelActivationSectionGroup.cs
- CompositionCommandSet.cs
- RelationshipDetailsCollection.cs
- VirtualPathProvider.cs
- AssemblyFilter.cs
- PropertyTab.cs
- StatusBarAutomationPeer.cs
- Trace.cs
- ConsoleKeyInfo.cs
- XmlCharacterData.cs
- XpsLiterals.cs
- __Filters.cs