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
- ChannelOptions.cs
- DataGridViewRowHeaderCell.cs
- MethodSet.cs
- SecurityManager.cs
- SchemaTypeEmitter.cs
- SelectingProviderEventArgs.cs
- DependencyPropertyValueSerializer.cs
- TypedElement.cs
- Fonts.cs
- TeredoHelper.cs
- Point3DAnimationBase.cs
- PropertyAccessVisitor.cs
- QueryContinueDragEvent.cs
- SymmetricAlgorithm.cs
- QilBinary.cs
- GroupItem.cs
- Hyperlink.cs
- FirstMatchCodeGroup.cs
- C14NUtil.cs
- AutomationAttributeInfo.cs
- UIHelper.cs
- StyleBamlRecordReader.cs
- EmbeddedMailObjectCollectionEditor.cs
- RouteItem.cs
- NullEntityWrapper.cs
- EventBuilder.cs
- sqlpipe.cs
- ServiceOperationParameter.cs
- ServiceX509SecurityTokenProvider.cs
- DocumentGridContextMenu.cs
- ProgressBarRenderer.cs
- XmlValueConverter.cs
- Fonts.cs
- FreezableOperations.cs
- SmtpClient.cs
- ITextView.cs
- EventLogException.cs
- Faults.cs
- IPEndPoint.cs
- Path.cs
- UIElementParagraph.cs
- ControllableStoryboardAction.cs
- AsyncContentLoadedEventArgs.cs
- Schema.cs
- PersistenceMetadataNamespace.cs
- LabelAutomationPeer.cs
- SelectionRangeConverter.cs
- HierarchicalDataBoundControl.cs
- CultureSpecificStringDictionary.cs
- LinqDataSourceInsertEventArgs.cs
- CompositeActivityTypeDescriptor.cs
- XmlBinaryReaderSession.cs
- DesignerAdRotatorAdapter.cs
- SessionState.cs
- MarkerProperties.cs
- Size.cs
- SslStreamSecurityUpgradeProvider.cs
- CompoundFileStreamReference.cs
- ListItemConverter.cs
- SessionSwitchEventArgs.cs
- StopStoryboard.cs
- DataContract.cs
- InlineUIContainer.cs
- MultiPageTextView.cs
- TreeNodeClickEventArgs.cs
- FileDialog.cs
- StartUpEventArgs.cs
- DefaultObjectMappingItemCollection.cs
- ReadContentAsBinaryHelper.cs
- WaitHandle.cs
- OledbConnectionStringbuilder.cs
- ClientData.cs
- BaseProcessor.cs
- Bold.cs
- FilteredSchemaElementLookUpTable.cs
- RbTree.cs
- StorageAssociationTypeMapping.cs
- MasterPageCodeDomTreeGenerator.cs
- SRGSCompiler.cs
- TextParagraphProperties.cs
- ChangeInterceptorAttribute.cs
- MobileControlBuilder.cs
- CorrelationValidator.cs
- IndentedTextWriter.cs
- LinkTarget.cs
- SmiContextFactory.cs
- CodeDirectoryCompiler.cs
- FileClassifier.cs
- addressfiltermode.cs
- ListItemConverter.cs
- MediaTimeline.cs
- OpacityConverter.cs
- SpecialFolderEnumConverter.cs
- ItemContainerGenerator.cs
- MarkupExtensionParser.cs
- HostVisual.cs
- ReturnValue.cs
- CollectionType.cs
- InputBindingCollection.cs
- InternalCache.cs