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
- Label.cs
- Cursor.cs
- mongolianshape.cs
- StringHandle.cs
- PrtTicket_Public_Simple.cs
- XmlWriterSettings.cs
- StyleCollection.cs
- ManagementClass.cs
- IntegerValidatorAttribute.cs
- TimersDescriptionAttribute.cs
- Point3DKeyFrameCollection.cs
- UpdateCompiler.cs
- DataControlLinkButton.cs
- ViewPort3D.cs
- ConfigurationSettings.cs
- UTF32Encoding.cs
- PatternMatcher.cs
- UrlMappingsModule.cs
- EventLogger.cs
- X509ServiceCertificateAuthentication.cs
- WorkflowOwnershipException.cs
- OleDbPermission.cs
- Timeline.cs
- CapiNative.cs
- DynamicValueConverter.cs
- DataPagerFieldCollection.cs
- DatatypeImplementation.cs
- ProfileSettingsCollection.cs
- ButtonField.cs
- CacheOutputQuery.cs
- CategoryNameCollection.cs
- XmlSchemaSimpleType.cs
- DataTableTypeConverter.cs
- ContextActivityUtils.cs
- DbConnectionStringCommon.cs
- TraceEventCache.cs
- XmlSchemaGroupRef.cs
- ChangeConflicts.cs
- WebPartConnectionsCancelVerb.cs
- TypedDataSourceCodeGenerator.cs
- Page.cs
- Parameter.cs
- NCryptNative.cs
- ProxySimple.cs
- Sql8ConformanceChecker.cs
- InheritanceAttribute.cs
- Win32Exception.cs
- LinqDataSourceView.cs
- SerialReceived.cs
- Directory.cs
- FactoryGenerator.cs
- ExtentCqlBlock.cs
- OpacityConverter.cs
- DelimitedListTraceListener.cs
- DesignTimeTemplateParser.cs
- RectIndependentAnimationStorage.cs
- NameValueSectionHandler.cs
- WebServiceMethodData.cs
- DocumentStatusResources.cs
- CharacterMetricsDictionary.cs
- ImageConverter.cs
- StatusBarDesigner.cs
- BinaryCommonClasses.cs
- EnterpriseServicesHelper.cs
- SspiSecurityTokenParameters.cs
- DescendantOverDescendantQuery.cs
- XmlSchemaDatatype.cs
- IChannel.cs
- SqlProcedureAttribute.cs
- SequenceRange.cs
- CompoundFileReference.cs
- InlineCollection.cs
- CustomGrammar.cs
- TraceSource.cs
- XNameConverter.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- PtsContext.cs
- QueryCacheEntry.cs
- ItemMap.cs
- CatalogPartCollection.cs
- MiniParameterInfo.cs
- SqlError.cs
- CasesDictionary.cs
- Number.cs
- SqlDataSourceSelectingEventArgs.cs
- EventLogStatus.cs
- XmlDomTextWriter.cs
- RoutedPropertyChangedEventArgs.cs
- RolePrincipal.cs
- ProjectionCamera.cs
- WindowsTokenRoleProvider.cs
- InstanceLockLostException.cs
- TreeViewCancelEvent.cs
- WebPartHelpVerb.cs
- PointAnimationClockResource.cs
- SoapFormatter.cs
- SafeHandles.cs
- AppDomainUnloadedException.cs
- SizeKeyFrameCollection.cs
- GenericAuthenticationEventArgs.cs