title: Why can't Windows 7 load the assembly PresentationFramework.Aero2?
body: <p>I recently finished my first WPF application I have been developing using Windows 8. It has worked fine on my machine. A friend of mine ran it in visual studio on his Windows 8 machine as well, and that worked. I install the program using click once on my machine, and it installs fine and runs.</p>
  
  <p>I installed Windows 7 on virtual box and attempted to install it using the click once. It fetched .NET 4.5 and SQL Server Compact, the install process seemed flawless. When Windows 7 tried to run the application, nothing useful happened. I installed Visual Studio in virtualbox and was able to get this stack trace.</p>
  
  <p>I looked up the PresentationFramework.Aero2 on Google and came across 3 SO questions and one MSDN question. The MSDN question gave me a hint of what I think it might be. If I go to C:\Windows\Microsoft.NET\Framework\4.0\WPF there is no PresentationFramework.Aero2.dll file, whereas on Windows 8 there is... so I copied and pasted it into the windows 7 equivalent place hoping to achieve something, but nothing came of it.</p>
  
  <p>Here is the Stack Trace:</p>
  
  <pre><code>System.Windows.Markup.XamlParseException was unhandled
    HResult=-2146233087
    Message='Add value to collection of type 'System.Collections.ObjectModel.ObservableCollection(System.Windows.Controls.DataGridColumn)' threw an exception.' Line number '35' and line position '71'.
    Source=PresentationFramework
    LineNumber=35
    LinePosition=71
    StackTrace:
         at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
         at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
         at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
         at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
         at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
         at System.Windows.Application.DoStartup()
         at System.Windows.Application.&lt;.ctor&gt;b__1(Object unused)
         at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
         at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
         at System.Windows.Threading.DispatcherOperation.InvokeImpl()
         at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
         at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
         at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
         at System.Windows.Threading.DispatcherOperation.Invoke()
         at System.Windows.Threading.Dispatcher.ProcessQueue()
         at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
         at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
         at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
         at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
         at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
         at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
         at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
         at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG&amp; msg)
         at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
         at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
         at System.Windows.Threading.Dispatcher.Run()
         at System.Windows.Application.RunDispatcher(Object ignore)
         at System.Windows.Application.RunInternal(Window window)
         at System.Windows.Application.Run(Window window)
         at System.Windows.Application.Run()
         at PremierAutoDataExtractor.App.Main()
    InnerException: System.IO.FileNotFoundException
         HResult=-2147024894
         Message=Could not load file or assembly 'PresentationFramework.Aero2, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
         Source=mscorlib
         FileName=PresentationFramework.Aero2, PublicKeyToken=31bf3856ad364e35
         FusionLog=WRN: Assembly binding logging is turned OFF.
  To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
  Note: There is some performance penalty associated with assembly bind failure logging.
  To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
  
         StackTrace:
              at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
              at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
              at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
              at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
              at System.Windows.Baml2006.Baml2006SchemaContext.ResolveAssembly(BamlAssembly bamlAssembly)
              at System.Windows.Baml2006.Baml2006SchemaContext.ResolveBamlTypeToType(BamlType bamlType)
              at System.Windows.Baml2006.Baml2006SchemaContext.ResolveBamlType(BamlType bamlType, Int16 typeId)
              at System.Windows.Baml2006.Baml2006SchemaContext.GetXamlType(Int16 typeId)
              at System.Windows.Baml2006.Baml2006Reader.Process_ElementStart()
              at System.Windows.Baml2006.Baml2006Reader.Process_OneBamlRecord()
              at System.Windows.Baml2006.Baml2006Reader.ReadObject(KeyRecord record)
              at System.Windows.ResourceDictionary.CreateObject(KeyRecord key)
              at System.Windows.ResourceDictionary.OnGettingValue(Object key, Object&amp; value, Boolean&amp; canCache)
              at System.Windows.ResourceDictionary.OnGettingValuePrivate(Object key, Object&amp; value, Boolean&amp; canCache)
              at System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean&amp; canCache)
              at System.Windows.ResourceDictionary.GetValue(Object key, Boolean&amp; canCache)
              at System.Windows.DeferredResourceReference.GetValue(BaseValueSourceInternal valueSource)
              at System.Windows.DeferredAppResourceReference.GetValue(BaseValueSourceInternal valueSource)
              at System.Windows.DependencyObject.GetEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, RequestFlags requests)
              at System.Windows.DependencyObject.GetValueEntry(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, RequestFlags requests)
              at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
              at System.Windows.Controls.DataGridHelper.GetCoercedTransferPropertyValue(DependencyObject baseObject, Object baseValue, DependencyProperty baseProperty, DependencyObject parentObject, DependencyProperty parentProperty, DependencyObject grandParentObject, DependencyProperty grandParentProperty)
              at System.Windows.Controls.DataGridColumn.OnCoerceHeaderStyle(DependencyObject d, Object baseValue)
              at System.Windows.DependencyObject.ProcessCoerceValue(DependencyProperty dp, PropertyMetadata metadata, EntryIndex&amp; entryIndex, Int32&amp; targetIndex, EffectiveValueEntry&amp; newEntry, EffectiveValueEntry&amp; oldEntry, Object&amp; oldValue, Object baseValue, Object controlValue, CoerceValueCallback coerceValueCallback, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, Boolean skipBaseValueChecks)
              at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry&amp; newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
              at System.Windows.DependencyObject.CoerceValue(DependencyProperty dp)
              at System.Windows.Controls.DataGridHelper.TransferProperty(DependencyObject d, DependencyProperty p)
              at System.Windows.Controls.DataGridColumn.SyncProperties()
              at System.Windows.Controls.DataGrid.UpdateColumnSizeConstraints(IList list)
              at System.Windows.Controls.DataGrid.OnColumnsChanged(Object sender, NotifyCollectionChangedEventArgs e)
              at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
              at System.Windows.Controls.DataGridColumnCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
              at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
              at System.Windows.Controls.DataGridColumnCollection.InsertItem(Int32 index, DataGridColumn item)
              at System.Collections.ObjectModel.Collection`1.Add(T item)
              at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Add(Object value)
              at System.Xaml.Schema.XamlTypeInvoker.AddToCollection(Object instance, Object item)
              at MS.Internal.Xaml.Runtime.ClrObjectRuntime.Add(Object collection, XamlType collectionType, Object value, XamlType valueXamlType)
         InnerException: 
  </code></pre>