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
- LinkButton.cs
- TextProperties.cs
- FileNotFoundException.cs
- IISUnsafeMethods.cs
- SoapElementAttribute.cs
- PaintValueEventArgs.cs
- EncodingStreamWrapper.cs
- CryptoKeySecurity.cs
- CharEnumerator.cs
- ErrorEventArgs.cs
- WindowsHyperlink.cs
- _Events.cs
- MiniParameterInfo.cs
- SerializationInfo.cs
- WindowsAuthenticationModule.cs
- ToolStripDropDownClosingEventArgs.cs
- Localizer.cs
- WebPartTransformer.cs
- XmlTextWriter.cs
- SplitContainer.cs
- SystemWebCachingSectionGroup.cs
- SqlProfileProvider.cs
- HttpCapabilitiesEvaluator.cs
- ProviderCollection.cs
- ExternalFile.cs
- SpotLight.cs
- RegexCompilationInfo.cs
- GridViewEditEventArgs.cs
- ClusterRegistryConfigurationProvider.cs
- DataGridViewLayoutData.cs
- SystemUdpStatistics.cs
- SystemResources.cs
- XmlSchemaRedefine.cs
- PassportAuthentication.cs
- CheckBox.cs
- TabPage.cs
- MimeMultiPart.cs
- StringCollectionEditor.cs
- LogReserveAndAppendState.cs
- FormatException.cs
- RichTextBoxDesigner.cs
- selecteditemcollection.cs
- ViewCellSlot.cs
- XslNumber.cs
- ChildrenQuery.cs
- PerSessionInstanceContextProvider.cs
- MonitorWrapper.cs
- GenericTextProperties.cs
- RijndaelCryptoServiceProvider.cs
- ResourceExpression.cs
- dataobject.cs
- Vector3DConverter.cs
- SubpageParagraph.cs
- mediaeventshelper.cs
- PartialCachingAttribute.cs
- GetRecipientRequest.cs
- Pool.cs
- DocumentSchemaValidator.cs
- Pen.cs
- DataControlPagerLinkButton.cs
- Crc32Helper.cs
- UnsafeCollabNativeMethods.cs
- SupportingTokenProviderSpecification.cs
- PersistChildrenAttribute.cs
- WebServiceMethodData.cs
- ChangeNode.cs
- BindStream.cs
- NewItemsContextMenuStrip.cs
- _FtpControlStream.cs
- SmiGettersStream.cs
- VirtualizingPanel.cs
- BoundPropertyEntry.cs
- ServiceDescriptionImporter.cs
- ResumeStoryboard.cs
- DisplayInformation.cs
- MediaTimeline.cs
- ObjectListCommand.cs
- OdbcEnvironment.cs
- CssClassPropertyAttribute.cs
- GeneralTransform3D.cs
- Lease.cs
- DESCryptoServiceProvider.cs
- PageStatePersister.cs
- HttpCookieCollection.cs
- OdbcCommand.cs
- EdmComplexPropertyAttribute.cs
- SymLanguageVendor.cs
- XmlAggregates.cs
- FormViewDeletedEventArgs.cs
- MailHeaderInfo.cs
- EventItfInfo.cs
- ClonableStack.cs
- HelpProvider.cs
- SecurityToken.cs
- FacetDescription.cs
- VectorAnimation.cs
- PropertyDescriptorComparer.cs
- CompositeCollectionView.cs
- ConversionHelper.cs
- SortQuery.cs