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
- ResourceSetExpression.cs
- DiscreteKeyFrames.cs
- SectionXmlInfo.cs
- XPathScanner.cs
- SqlFileStream.cs
- DetailsViewDesigner.cs
- ApplicationId.cs
- SchemaCollectionPreprocessor.cs
- ListBindingConverter.cs
- WebPartZoneBase.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- FieldAccessException.cs
- EncryptedKey.cs
- SQLInt64.cs
- securitymgrsite.cs
- FrugalList.cs
- PropertyChangingEventArgs.cs
- ControlPager.cs
- xml.cs
- FileStream.cs
- WriteLineDesigner.xaml.cs
- WebBrowser.cs
- ApplicationBuildProvider.cs
- BitmapFrameDecode.cs
- WorkflowInstance.cs
- ObjectPropertyMapping.cs
- IgnoreFlushAndCloseStream.cs
- TypographyProperties.cs
- DataObjectMethodAttribute.cs
- TreeNodeSelectionProcessor.cs
- WebPartsPersonalization.cs
- TemplateKeyConverter.cs
- PenLineCapValidation.cs
- CommandArguments.cs
- CodeGroup.cs
- JoinCqlBlock.cs
- PageOutputColor.cs
- XPathDocumentIterator.cs
- FormatConvertedBitmap.cs
- RoleService.cs
- ResponseBodyWriter.cs
- WebColorConverter.cs
- EdmScalarPropertyAttribute.cs
- DataReceivedEventArgs.cs
- QilParameter.cs
- PartialTrustHelpers.cs
- StrongNamePublicKeyBlob.cs
- DataGridHeaderBorder.cs
- MessagePropertyVariants.cs
- AccessedThroughPropertyAttribute.cs
- HostSecurityManager.cs
- SizeAnimationUsingKeyFrames.cs
- XmlEncApr2001.cs
- WindowsListViewScroll.cs
- DataGridHelper.cs
- DataGridViewRowsRemovedEventArgs.cs
- HttpModulesSection.cs
- ExceptionRoutedEventArgs.cs
- TimeSpanStorage.cs
- SmiTypedGetterSetter.cs
- querybuilder.cs
- ContextStaticAttribute.cs
- ForwardPositionQuery.cs
- IsolationInterop.cs
- Matrix.cs
- ApplySecurityAndSendAsyncResult.cs
- ScriptResourceHandler.cs
- Point4D.cs
- Renderer.cs
- ServiceManager.cs
- CurrencyWrapper.cs
- CompositeDataBoundControl.cs
- SelectionItemPattern.cs
- EarlyBoundInfo.cs
- CqlLexer.cs
- WpfXamlMember.cs
- MeasureItemEvent.cs
- EncodingTable.cs
- TraceLevelStore.cs
- PeerDuplexChannel.cs
- ProfilePropertyNameValidator.cs
- QueryExpression.cs
- SafeUserTokenHandle.cs
- BindingRestrictions.cs
- InsufficientMemoryException.cs
- SqlResolver.cs
- DispatcherProcessingDisabled.cs
- InstancePersistenceContext.cs
- RenderData.cs
- CqlWriter.cs
- ClientSession.cs
- TypeListConverter.cs
- Clock.cs
- RelatedView.cs
- CodeAttributeArgumentCollection.cs
- ItemList.cs
- XPathMultyIterator.cs
- CacheRequest.cs
- ConfigurationSchemaErrors.cs
- AuthenticationModulesSection.cs