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
- PersistencePipeline.cs
- ArraySegment.cs
- WsatServiceCertificate.cs
- TableLayoutRowStyleCollection.cs
- PrintPreviewControl.cs
- BinaryObjectReader.cs
- UncommonField.cs
- LocalizationComments.cs
- XsltException.cs
- GC.cs
- FileSystemEventArgs.cs
- QueryOutputWriterV1.cs
- ItemContainerGenerator.cs
- ProfilePropertySettings.cs
- SByte.cs
- SqlCommand.cs
- DynamicILGenerator.cs
- FormatSettings.cs
- SettingsContext.cs
- ProgressPage.cs
- StylusPoint.cs
- ObjectDataSourceSelectingEventArgs.cs
- SystemIPInterfaceStatistics.cs
- RectangleConverter.cs
- PrePrepareMethodAttribute.cs
- DragEvent.cs
- GrammarBuilderBase.cs
- regiisutil.cs
- RepeaterItemEventArgs.cs
- ConnectionPoolRegistry.cs
- BindingGraph.cs
- LogLogRecord.cs
- Currency.cs
- PeerNameRecord.cs
- securitycriticaldata.cs
- TreeNodeEventArgs.cs
- WorkflowViewService.cs
- SQLConvert.cs
- ToolTip.cs
- SmtpLoginAuthenticationModule.cs
- NamespaceTable.cs
- Type.cs
- PolicyDesigner.cs
- RotateTransform.cs
- HashSetDebugView.cs
- ConstraintCollection.cs
- CodeCompiler.cs
- EmbeddedObject.cs
- FixedPageStructure.cs
- WebBrowserNavigatingEventHandler.cs
- XmlBoundElement.cs
- LicenseManager.cs
- FirstMatchCodeGroup.cs
- DataGridViewAccessibleObject.cs
- RotateTransform.cs
- ArraySubsetEnumerator.cs
- EntityUtil.cs
- FontFaceLayoutInfo.cs
- ForeignConstraint.cs
- Claim.cs
- Hyperlink.cs
- WebBrowserEvent.cs
- DispatcherOperation.cs
- Pointer.cs
- HierarchicalDataSourceControl.cs
- DesignerActionGlyph.cs
- FactoryId.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- WorkflowMarkupSerializer.cs
- XmlHelper.cs
- BindingBase.cs
- AttributeSetAction.cs
- TextTreeFixupNode.cs
- SelectedDatesCollection.cs
- ThemeableAttribute.cs
- Hash.cs
- ValidationSummary.cs
- SignedXml.cs
- DataControlPagerLinkButton.cs
- DesignerTransactionCloseEvent.cs
- BaseCodePageEncoding.cs
- HttpApplication.cs
- FixedElement.cs
- Queue.cs
- UserControl.cs
- DateTimeConverter2.cs
- PEFileEvidenceFactory.cs
- ZeroOpNode.cs
- EpmContentSerializer.cs
- XamlDesignerSerializationManager.cs
- WorkflowInstanceQuery.cs
- DecimalConstantAttribute.cs
- ProvidersHelper.cs
- PrintDialog.cs
- basenumberconverter.cs
- WebBrowserNavigatedEventHandler.cs
- MaskedTextBoxTextEditor.cs
- PlatformCulture.cs
- GroupBoxRenderer.cs
- ImageMetadata.cs