相关疑难解决方法(0)

具有嵌套控件的DesignMode

有没有人在开发控件时找到了解决DesignMode问题的有用方法?

问题是,如果嵌套控件,则DesignMode仅适用于第一级.第二级和更低级别的DesignMode将始终返回FALSE.

标准的hack一直在查看正在运行的进程的名称,如果它是"DevEnv.EXE"那么它必须是studio,因此DesignMode真的是真的.

问题是寻找ProcessName通过注册表和其他奇怪的部分工作,最终结果是用户可能没有查看进程名称所需的权限.另外这条奇怪的路线很慢.所以我们不得不堆积额外的黑客来使用单例,如果在请求进程名称时抛出错误,则假设DesignMode为FALSE.

确定DesignMode的一个很好的干净方法是有序的.让微软在框架内部修复它会更好!

.net user-controls

86
推荐指数
5
解决办法
2万
查看次数

编辑XAML导致Visual Studio的Designer崩溃

原始问题


我正在使用Visual Studio 2010处理WPF应用程序Telerik.

每次我使用设计器时,我一直在处理很多崩溃:点击一个元素,改变它的位置,甚至改变它的名字都会导致崩溃,并显示以下异常:

System.ArgumentNullException
Value cannot be null.
   to System.RuntimeType.MakeGenericType(Type[] instantiation)
   to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.GetRuntimeType(Type type)
   to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkType.TryGetRuntimeType()
   to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkUtil.EnsureRuntimeType(Type type)
   to Microsoft.VisualStudio.Shell.Design.VsTargetFrameworkProvider.GetRuntimeType(Type reflectionType)
[...]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下事项:

  • 卸载并重新安装Telerik;
  • 卸载并重新安装.NET 4.0;
  • 卸载并重新安装Visual Studio.

这些尝试都没有奏效.

今天早上,我注意到设计师根本没有崩溃,我明白了原因:设计师在我打开或编辑XAML时崩溃了.

打开XAML后,Visual Studio开始冻结,每次我尝试点击某些内容时设计器都会崩溃.如果我关闭Visual Studio并构建解决方案(不打开XAML),一切都可以正常使用设计器.

我的猜测是,当Visual Studio试图将XAML代码 "转换" 为设计器中的图形元素时,出现问题,并且仅在该方向上.


问题:你有没有尝试过这种事情?您是否知道为什么修改XAML会导致崩溃以及如何解决?

先感谢您.


阅读答案后做了新的尝试

  • 在设计器打开时调试Visual Studio实例本身.导致的方法ArgumentNullExceptionGetRuntimeTime.我已经能够看到.NET代码,但我无法确定问题的根源.请参阅下面的完整堆栈跟踪:

在此输入图像描述

此外,这是发生错误的确切行和异常详细信息.请注意,该文件是VSIsolationProviderService.cs,并且我能够看到源代码,这要归功于.NET Reflector Object Browser.

在此输入图像描述

  Message=Value cannot be null.
  Source=mscorlib
  StackTrace:
       to System.RuntimeType.MakeGenericType(Type[] instantiation)
  InnerException: …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml visual-studio-2010

20
推荐指数
3
解决办法
3310
查看次数

WPF:VS2012设计器显示"组件'XXX'没有由URI YYY标识的资源"

正如标题所暗示的那样,设计者抛出了这个错误,这意味着设计师无法正确显示我的UserControl,这反过来意味着我无法在此UserControl中从元素到元素平滑导航以进行修改.真烦人

XXX是我的UserControl的名称,而URI YYY实际上是XXX的路径.所以我不明白它不能发现自己是资源.我搜索了这个错误,但大多数都发生在运行时.在我的情况下,当我执行它时根本不会发生.这个错误的描述真的不够解释,因为我不确定CLR中谁将文件本身作为资源加载.

另一件值得一提的是,这个错误只发生在我构建我的应用程序项目后,UserControl所在的错误.在我点击清理项目之后,设计师可以显示整个东西(但显然我无法清理因为建筑需要时间,所以在我做任何改变之前的每次项目)

wpf designer visual-studio

16
推荐指数
2
解决办法
7409
查看次数

NullReferenceException,没有堆栈跟踪......从哪里开始?

我有一个WPF音频应用程序.

偶尔(甚至在调试器中)我看到一个NullReferenceException没有堆栈跟踪信息.

如何开始调试这样的问题?

一些背景:

我是P/Invoking函数,WinMM.dll其中涉及在调用时注册回调waveOutOpen

    [DllImport("winmm.dll")]
    public static extern MmResult waveOutOpen(out IntPtr phwo, IntPtr uDeviceID, WaveFmt pwfx, WaveCallbk dwCallback, IntPtr dwInstance, int fdwOpen);
Run Code Online (Sandbox Code Playgroud)

事实证明这很难稳定,尤其是在我打电话的时候waveOutClose,并立即waveOutOpen再次调用(通常是改变输出格式).

我怀疑这个问题可能与我上面描述的调用有关(尽管知识很少,我可能完全偏离目标).

重现问题目前证明是难以捉摸的,尽管我可以为一直看到这个问题的用户提供构建.我可能会尝试加快导致问题的操作,以便在调试器中重现问题更加确定.

关于调试器,我没有修改任何设置(包括Enable unmanaged code debugging)或任何Debug -> Exceptions...设置.说实话,我对这里提供的内容毫无头绪,所以任何提示都是受欢迎的.

异常怎么可能没有堆栈跟踪?你以前见过这个吗?救命!

c# debugging wpf pinvoke winmm

10
推荐指数
1
解决办法
1560
查看次数