Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSerializableServices.cs
- NativeMethods.cs
- QuaternionAnimation.cs
- EtwTrackingBehaviorElement.cs
- IImplicitResourceProvider.cs
- Exceptions.cs
- ButtonField.cs
- OleDbStruct.cs
- VariantWrapper.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ViewCellRelation.cs
- XmlLoader.cs
- SqlServices.cs
- WorkflowTimerService.cs
- DescendantOverDescendantQuery.cs
- SafeEventLogWriteHandle.cs
- CellPartitioner.cs
- HelpInfo.cs
- ActivityStatusChangeEventArgs.cs
- ComboBox.cs
- SqlServices.cs
- GatewayDefinition.cs
- Schema.cs
- XmlUTF8TextWriter.cs
- BooleanConverter.cs
- TextTreeFixupNode.cs
- SearchForVirtualItemEventArgs.cs
- TypeToken.cs
- BaseValidator.cs
- BitmapEffectCollection.cs
- WaveHeader.cs
- RefreshEventArgs.cs
- StickyNote.cs
- ParseChildrenAsPropertiesAttribute.cs
- Color.cs
- InternalEnumValidatorAttribute.cs
- TextDpi.cs
- Select.cs
- XmlSchemaAnnotated.cs
- DesignerDataView.cs
- Aggregates.cs
- HttpServerChannel.cs
- JpegBitmapDecoder.cs
- ListView.cs
- CodeTypeMember.cs
- StrokeIntersection.cs
- WebPartUtil.cs
- ParseNumbers.cs
- SendMessageChannelCache.cs
- Column.cs
- Selector.cs
- ImageConverter.cs
- SHA1.cs
- InternalPermissions.cs
- WindowsTokenRoleProvider.cs
- ProgressBarHighlightConverter.cs
- RelatedCurrencyManager.cs
- PackageDigitalSignatureManager.cs
- XmlSchemaProviderAttribute.cs
- FrameworkContentElement.cs
- StyleSheetRefUrlEditor.cs
- ListViewSortEventArgs.cs
- DataGridViewColumnHeaderCell.cs
- ModelChangedEventArgsImpl.cs
- ProtectedProviderSettings.cs
- ClientRoleProvider.cs
- RegistryPermission.cs
- WebResponse.cs
- DES.cs
- StylusPlugInCollection.cs
- HighlightVisual.cs
- TextAdaptor.cs
- Queue.cs
- TagNameToTypeMapper.cs
- ThemeDictionaryExtension.cs
- BlockUIContainer.cs
- DataGridRelationshipRow.cs
- NativeMethods.cs
- TerminatorSinks.cs
- mda.cs
- HttpCachePolicy.cs
- StructuralCache.cs
- TextModifierScope.cs
- PartialCachingControl.cs
- XmlDocumentSerializer.cs
- CharacterBuffer.cs
- ADMembershipProvider.cs
- HashJoinQueryOperatorEnumerator.cs
- TdsParameterSetter.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SafeUserTokenHandle.cs
- TakeOrSkipQueryOperator.cs
- EventlogProvider.cs
- PrinterUnitConvert.cs
- Application.cs
- Schedule.cs
- ObjectStateEntry.cs
- ScriptMethodAttribute.cs
- ListViewTableRow.cs
- DeclarativeCatalogPart.cs