2012-04-26 10 views
5

Estamos experimentando accidentes en varias máquinas en el diseñador WPF VS2010 en el siguiente escenario:¿Qué causa el bloqueo del Diseñador VS 2010 SP1 WPF?

  • VS 2010 SP1 instalado
  • 64 bits Windows 7
  • referencia a NHibernate.dll (versión 1.2.0.712)

para reproducir el error, cree una nueva solución de WPF, lleve a cabo las siguientes acciones:

  • crear una nueva solución WPF
  • abrir la ventana principal, agregue un cuadro de texto a ella, defina un texto estático
  • agregar una referencia a FluentNhibernate.dll, versión 1.2.0.712
  • limpia y reconstruir la solución
  • Abrir ventana principal en el diseñador de nuevo, editar texto
  • en el diseñador, click a la izquierda de la ventana, a continuación, de nuevo en el cuadro de texto nuevo

no hay datos/comandos enlaces, no hay código que hace referencia a la gripe entNHibernate funcionalidad ni nada muy sofisticado, sólo una nueva solución con la siguiente WPF XAML en el MainWindow.xaml:

<Window x:Class="testWpfApplication2.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="800" 
    Title="MainWindow" Height="350" > 
    <Grid> 
    <TextBox Text="yxcydfdssdfsdfdsfsdsddsasdyxcasd" /> 
    </Grid> 
</Window> 

Aquí está la StackTrace completa:

System.Reflection.TargetInvocationException 
Exception has been thrown by the target of an invocation. 
    at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) 
    at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 
    at System.Delegate.DynamicInvokeImpl(Object[] args) 
    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) 

System.NullReferenceException 
Object reference not set to an instance of an object. 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.GetRuntimeTypeVariable(Type type) 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.GetRuntimeType(Type type) 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.EnsureRuntimeType(Type type) 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.GetRuntimeType(Type type) 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkType.TryGetRuntimeType() 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.EnsureRuntimeType(Type type) 
    at Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkProvider.GetRuntimeType(Type reflectionType) 
    at MS.Internal.Package.VSIsolationProviderService.RemoteReferenceProxy.VsReflectionResolver.GetRuntimeType(Type reflectionType) 
    at Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.CachingReflectionResolver.GetRuntimeType(Type reflectionType) 
    at Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.Microsoft.Windows.Design.Metadata.IReflectionResolver.GetRuntimeType(Type reflectionType) 
    at MS.Internal.Metadata.ClrType.get_RuntimeMember() 
    at MS.Internal.Metadata.ClrMember`1.Microsoft.Windows.Design.Metadata.Reflection.IReflectionMember.get_MemberInfo() 
    at MS.Internal.Metadata.ClrType.Equals(Object obj) at System.Collections.Generic.ObjectEqualityComparer`1.Equals(T x, T y) 
    at System.Collections.Generic.Dictionary`2.FindEntry(TKey key) 
    at Microsoft.Windows.Design.Metadata.Xaml.XamlExtensionImplementations.<>c__DisplayClass5.<FindAttachableProperties>b__4(ITypeMetadata walkType) 
    at MS.Internal.Design.Metadata.Xaml.XamlType.<GetAllAttachableProperties>d__7.MoveNext() 
    at MS.Internal.Design.Metadata.Xaml.XamlType.<FindAttachableProperties>d__0.MoveNext() 
    at Microsoft.Windows.Design.Metadata.Xaml.XamlExtensionImplementations.<FindAttachableProperties>d__7.MoveNext() 
    at MS.Internal.VirtualModel.VirtualModelPropertyCollection.<GetUncachedProperties>d__0.MoveNext() 
    at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
    at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) 
    at MS.Internal.VirtualModel.VirtualModelPropertyCollection.GetEnumerator() 
    at MS.Internal.Designer.PropertyEditing.Model.Properties.ModelPropertyMerger.<GetFirstProperties>d__0.MoveNext() 
    at MS.Internal.Designer.PropertyEditing.Views.PropertyEntryReader.RedraftEntries(IPropertyViewManager viewManager, Selection selection, Boolean attachedOnly, IEventCodeBehindProxy eventCodeBehindProxy, CategoryList categoryList) 
    at MS.Internal.Designer.PropertyEditing.PropertyInspector.UpdateCategories(Selection selection, Boolean attachedOnly, IEntryReader entryReader) 
    at MS.Internal.Designer.PropertyEditing.PropertyInspector.RefreshPropertyList(Boolean attachedOnly) 
    at MS.Internal.Designer.PropertyEditing.PropertyInspector.OnSelectionChangedIdle() 

MS ha confirmado como insecto SP1, pero para un resultado satisfactorio, necesito entender más sobre el problema ...

¿Qué causa esto, ¿por qué ocurre solo cuando addind FNH, ¿por qué solo al agregarlo desde una ubicación determinada (el montaje es el mismo - nosotros hizo una comparación bytewise)? Sin SP1, funciona ...

+1

Lo último que he hecho con respecto a este se descarga FluentNHibernate Código Fuente (último) y lo referencia como un proyecto. Esto funciona bien, así que básicamente tiene que ser algo con el dll en cuestión. ¿Realiza Visual Studio algo así como el cálculo de la suma de comprobación en los archivos DLL a los que se hace referencia? –

+0

¿Esto sucede con el control que usa? ¿Sucede cuando no hay controles dentro de la ventana? ¿Y cómo instalaste NHibernate? – Kcvin

Respuesta

0

A veces conseguimos evitar esto mediante la adición de

if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) 
       return; 

en caso cargado del control infractor

Cuestiones relacionadas