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
- ParseNumbers.cs
- GridViewRowPresenterBase.cs
- PrintController.cs
- documentation.cs
- EncodingTable.cs
- DataGridViewLinkColumn.cs
- SingletonConnectionReader.cs
- BinaryObjectInfo.cs
- PerformanceCounterManager.cs
- MinimizableAttributeTypeConverter.cs
- TableCell.cs
- MemberDescriptor.cs
- MergeLocalizationDirectives.cs
- SoapEnumAttribute.cs
- MappingException.cs
- TypeListConverter.cs
- DependencyObjectPropertyDescriptor.cs
- ClientSession.cs
- Visitor.cs
- ItemList.cs
- BoolExpr.cs
- ByteKeyFrameCollection.cs
- XmlSchemaChoice.cs
- QilParameter.cs
- ObjectDataSourceMethodEventArgs.cs
- _ConnectOverlappedAsyncResult.cs
- PageOrientation.cs
- SecureUICommand.cs
- PropertyManager.cs
- RangeValidator.cs
- DynamicVirtualDiscoSearcher.cs
- StylusOverProperty.cs
- ISessionStateStore.cs
- LineVisual.cs
- SemaphoreFullException.cs
- DataControlLinkButton.cs
- HostProtectionPermission.cs
- DataListItemEventArgs.cs
- Debug.cs
- MediaSystem.cs
- SymmetricSecurityProtocolFactory.cs
- SerializationBinder.cs
- KeyEventArgs.cs
- PathTooLongException.cs
- ChildrenQuery.cs
- ResourceExpressionBuilder.cs
- TextRangeEdit.cs
- ApplicationSecurityInfo.cs
- DesignerGenericWebPart.cs
- WinEventWrap.cs
- CodeAccessPermission.cs
- MouseGestureConverter.cs
- AppSettingsSection.cs
- NameGenerator.cs
- configsystem.cs
- QueryInterceptorAttribute.cs
- ValidationErrorCollection.cs
- Stream.cs
- ListBase.cs
- FileDialog_Vista.cs
- SafeEventLogWriteHandle.cs
- Viewport3DAutomationPeer.cs
- WebPartDescriptionCollection.cs
- LostFocusEventManager.cs
- __ComObject.cs
- DataColumnMappingCollection.cs
- DelegateBodyWriter.cs
- PreDigestedSignedInfo.cs
- StringUtil.cs
- NameTable.cs
- SequentialUshortCollection.cs
- SystemEvents.cs
- NameSpaceExtractor.cs
- CheckBox.cs
- AccessKeyManager.cs
- ServiceKnownTypeAttribute.cs
- CompModSwitches.cs
- VirtualizedItemPattern.cs
- DataListCommandEventArgs.cs
- RSAOAEPKeyExchangeDeformatter.cs
- MetadataUtil.cs
- CodeTypeOfExpression.cs
- HttpListenerContext.cs
- MouseGestureValueSerializer.cs
- SrgsSubset.cs
- CheckoutException.cs
- sqlser.cs
- ReferenceConverter.cs
- Timeline.cs
- TagNameToTypeMapper.cs
- designeractionbehavior.cs
- XmlDomTextWriter.cs
- SelectionItemPattern.cs
- XmlNamespaceManager.cs
- ExpandCollapsePattern.cs
- IndexedEnumerable.cs
- Asn1IntegerConverter.cs
- LocatorGroup.cs
- WebOperationContext.cs
- Trace.cs