Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CharUnicodeInfo.cs
- SqlServer2KCompatibilityAnnotation.cs
- RecommendedAsConfigurableAttribute.cs
- EllipseGeometry.cs
- CannotUnloadAppDomainException.cs
- ParameterToken.cs
- fixedPageContentExtractor.cs
- GeneralTransform3DTo2D.cs
- Tuple.cs
- ProtectedConfiguration.cs
- RectAnimation.cs
- OleDbSchemaGuid.cs
- OracleTransaction.cs
- ByteStreamGeometryContext.cs
- ActionFrame.cs
- printdlgexmarshaler.cs
- EditorAttribute.cs
- FillRuleValidation.cs
- xml.cs
- ArrangedElement.cs
- GroupBox.cs
- ToolboxItemSnapLineBehavior.cs
- DispatcherEventArgs.cs
- WebPartDescriptionCollection.cs
- CheckBox.cs
- KeyFrames.cs
- MSHTMLHost.cs
- FactorySettingsElement.cs
- ServicePoint.cs
- OletxCommittableTransaction.cs
- DbProviderFactories.cs
- elementinformation.cs
- DataServiceRequestOfT.cs
- ExpressionBindings.cs
- TextSelectionHighlightLayer.cs
- PackageRelationshipCollection.cs
- BaseInfoTable.cs
- ImageKeyConverter.cs
- FlowDocumentView.cs
- DelegatedStream.cs
- DesignerSelectionListAdapter.cs
- SortableBindingList.cs
- CacheMemory.cs
- SqlCommandBuilder.cs
- ListMarkerSourceInfo.cs
- XmlDataProvider.cs
- DeferrableContent.cs
- ExtensionSimplifierMarkupObject.cs
- XmlSchemaAttributeGroup.cs
- CanExecuteRoutedEventArgs.cs
- ExpressionBuilderCollection.cs
- WebPartEditVerb.cs
- WinFormsComponentEditor.cs
- CompilationSection.cs
- DynamicQueryableWrapper.cs
- SymbolPair.cs
- HtmlTableRow.cs
- XamlPoint3DCollectionSerializer.cs
- unitconverter.cs
- VisualStateManager.cs
- LocalizationCodeDomSerializer.cs
- DetailsView.cs
- TcpClientChannel.cs
- ValidationService.cs
- FactoryGenerator.cs
- PieceDirectory.cs
- Run.cs
- SQLInt16Storage.cs
- AppDomainFactory.cs
- PrimitiveSchema.cs
- SafeFileMapViewHandle.cs
- PropertyTab.cs
- VisualTreeFlattener.cs
- QilParameter.cs
- DataSourceCache.cs
- DocumentViewerConstants.cs
- PropertyManager.cs
- Marshal.cs
- PropertyNames.cs
- Validator.cs
- RoutedEventHandlerInfo.cs
- SqlDuplicator.cs
- ResetableIterator.cs
- EntityDataSourceDesigner.cs
- NamespaceQuery.cs
- UnknownExceptionActionHelper.cs
- XsltLibrary.cs
- RegexCharClass.cs
- ServiceDescriptionImporter.cs
- XmlSchemaAppInfo.cs
- AnimationStorage.cs
- StrokeCollection.cs
- Common.cs
- ToolStripDropTargetManager.cs
- ExtensionFile.cs
- XmlMemberMapping.cs
- GridViewCancelEditEventArgs.cs
- PrivateFontCollection.cs
- OleDbConnectionInternal.cs
- _TLSstream.cs