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
- ExpressionVisitorHelpers.cs
- BlockUIContainer.cs
- ELinqQueryState.cs
- EventTask.cs
- XmlSchemaSimpleContentExtension.cs
- StringDictionary.cs
- SessionStateModule.cs
- PrintPageEvent.cs
- FormsAuthentication.cs
- AsymmetricSecurityProtocolFactory.cs
- Geometry3D.cs
- AbandonedMutexException.cs
- ISessionStateStore.cs
- SuppressIldasmAttribute.cs
- InputLanguageCollection.cs
- MenuBase.cs
- InitializeCorrelation.cs
- TrackingStringDictionary.cs
- MouseGestureConverter.cs
- DataTemplateSelector.cs
- BaseResourcesBuildProvider.cs
- DataServiceResponse.cs
- BamlVersionHeader.cs
- CompiledAction.cs
- CodeRegionDirective.cs
- FileUpload.cs
- Positioning.cs
- TargetException.cs
- SmtpDateTime.cs
- nulltextcontainer.cs
- TextPatternIdentifiers.cs
- ControlPropertyNameConverter.cs
- shaper.cs
- XmlIncludeAttribute.cs
- PerfCounterSection.cs
- Zone.cs
- CodeArgumentReferenceExpression.cs
- ChangePassword.cs
- QueueProcessor.cs
- BuildProvider.cs
- PropertyChangedEventManager.cs
- SAPIEngineTypes.cs
- NullRuntimeConfig.cs
- XMLSchema.cs
- QuerySafeNavigator.cs
- WorkerRequest.cs
- SkipQueryOptionExpression.cs
- DashStyle.cs
- DataGridViewCellStyleChangedEventArgs.cs
- RangeContentEnumerator.cs
- HttpCapabilitiesEvaluator.cs
- MatrixAnimationBase.cs
- SelectedPathEditor.cs
- UiaCoreApi.cs
- VerticalAlignConverter.cs
- FormatterConverter.cs
- RadioButtonList.cs
- DataColumnMapping.cs
- CapabilitiesState.cs
- SizeConverter.cs
- ConditionalBranch.cs
- UnsafeNativeMethods.cs
- EntityStoreSchemaFilterEntry.cs
- XmlSchemaGroup.cs
- DeflateEmulationStream.cs
- TlsSspiNegotiation.cs
- ToolStripButton.cs
- XmlSchemaIdentityConstraint.cs
- LabelAutomationPeer.cs
- WebEventTraceProvider.cs
- Calendar.cs
- TypeForwardedToAttribute.cs
- DbProviderManifest.cs
- OptimalBreakSession.cs
- TextEffectCollection.cs
- AuthenticationService.cs
- MessageRpc.cs
- SiteMapPathDesigner.cs
- SQLDateTime.cs
- LocalValueEnumerator.cs
- ConfigurationValidatorBase.cs
- Operand.cs
- ConvertTextFrag.cs
- DataSourceHelper.cs
- UrlPath.cs
- UpnEndpointIdentityExtension.cs
- ModelVisual3D.cs
- cookiecontainer.cs
- SurrogateSelector.cs
- CopyOnWriteList.cs
- InvalidPrinterException.cs
- CharacterString.cs
- SQLString.cs
- Grant.cs
- TaiwanLunisolarCalendar.cs
- AnimationException.cs
- SamlAudienceRestrictionCondition.cs
- Popup.cs
- CustomLineCap.cs
- MailMessageEventArgs.cs