显示可视化器错误 "无法加载此自定义查看器"。

26

当我尝试使用标准的DataSet可视化工具检查DataSet时,出现错误"could not load this custom viewer"。即使我编写了简单的数据集可视化程序,也会抛出相同的错误。

在其他配置相同的计算机上,该可视化工具可以正常显示而没有任何错误。

操作系统:Windows 7 x86 (Release)

开发环境:Visual Studio 2010 RC

有人有任何想法吗?

我已重新安装VS但没有效果。

13个回答

37

请尝试以下方法。

-进入工具->选项->调试->取消勾选"使用托管的兼容性模式"


这仍然适用于vs2019。 - Hoppe
2
在我的VS2019 Pro 16.4.4中,这并没有起作用。当我点击一个DataTable的Table Visualizer时,仍然会出现“无法加载此自定义查看器”的提示。 - StarNamer
我也一样。还在做着。 - Bill Norman

7
我在VS 2015中遇到了同样的问题,这里的回答都没有帮助我,但是我在github上找到了一个问题,它描述了我的问题。
对我来说,解决方案或者说是变通方法是关闭“使用传统的C#和VB评估器”选项,我(显然)已经在“工具”->“选项”->“调试”->“常规”中打开了该选项。

在我的VS2019专业版16.4.4中也没有起作用。该选项已经关闭了。 - StarNamer
2
VS2019社区版v.16.7.1 - 在调试->常规下甚至看不到“使用传统的C#和VB求值器”的选项。 - Bill Norman
@BillNorman 如果你没有看到它,那可能不是你的问题,但仍有可能在%AppData\Local\Microsoft\VisualStudio\16.0_xxxxxxxx\Settings%下更改它。在我的情况下,我曾经因为另一个问题而更改了它。 - Eduardo Wada

6
诊断此问题的最佳方法是调试Visual Studio本身。请尝试以下操作:
  • 将Visual Studio置于您想要使用Visualizer的状态
  • 将另一个版本的Visual Studio附加到原始版本(仅托管)
  • 禁用"Just my Code"(工具->选项->调试器->取消选中"Just my Code")
  • 转到调试->异常
  • 勾选"CLR Exceptions"的Throw框
  • 切换回第一个VS并尝试显示您的Visualizer
这应该会引发一个异常,然后在第二个Visual Studio实例中显示出来。如果这不足以解决您的问题,请回帖提供更多信息。

好的!这是个好主意。我试了一下,看到了下一个异常: “由配置了NoSecurityChanges标志的AppDomainManager修改了应用程序域的安全状态。” 顺便说一句,当我尝试编译添加了COM对象dll的项目时,只看到了这个异常。 解决这个问题我也没有找到方法。 - LionSoft
这对我不起作用。如果我附加调试器并执行其余指定的操作,我仍然会得到可怕的“无法加载此自定义查看器”窗口。 - Nikola Malešević
这并没有帮助。在我切换回原始的VS2019之前,我会一直收到重复的“System.UriFormatException”错误。如果我禁用该异常检查,那么我就会收到重复的“System.ComponentModel.Win32Exception”错误(无效的窗口句柄)。如果我禁用它,那么弹出窗口将出现而不会抛出异常。 - StarNamer

5
对我来说,重新启动 Visual Studio 2010 帮助了解决问题。

3

1
太棒了!这对我有用!! - Casey Crookston
这也是对我有用的解决方法! - StarNamer

2

我找到了解决方法! 我修改了DevExpress模块的源代码并重新编译了它。之后我取消了参数NetFx40_LegacySecurityPolicy的enabled="false",现在可以愉快地使用了。 :)

文件路径为"%DeveloperExpress.NET%\Sources\DevExpress.Data\Utils\Security.cs"

using System;
using System.Security;
using System.Security.Permissions;
namespace DevExpress.Data.Helpers {
    public static class SecurityHelper {
        public static bool IsPartialTrust {
            get {
                return !IsPermissionGranted(new ReflectionPermission(ReflectionPermissionFlag.MemberAccess));
            }
        }
        public static bool IsPermissionGranted(IPermission permission) {
            bool result = true;
/* (changed by Lion)
            try {
                PermissionSet ps = SecurityManager.ResolvePolicy((System.Security.Policy.Evidence)null);
                ps = ps.Copy();
                ps.AddPermission(permission);
                ps.Demand();
            }
            catch (SecurityException) {
                result = false;
            }
*/
            return result;
        }
    }
}

请您能否提供更详细的信息? - yuva

2

对我来说,我已经为我创建的一种类型编写了自己的可视化工具。显然,这会影响到VS 2017显示数据集内置可视化工具的能力。一旦我删除了自己的可视化工具和Microsoft Debugger Visualizer引用,我就可以使用内置的可视化工具。
我在较早版本的VS中编写的其他可视化工具没有引起任何问题。


1

我找到了这个错误的原因。 根据这个建议 http://go.microsoft.com/fwlink/?LinkID=155570,我在devenv.exe.config中添加了以下参数 NetFx40_LegacySecurityPolicy enabled="true" 并且在.config文件中添加了这个参数后,当尝试打开DataSet可视化器时出现错误。

当我移除这个参数后,一切都变得正常。异常 "应用程序域的安全状态已被配置为具有NoSecurityChanges标志的AppDomainManager修改" 也得到了修复。

但是我需要 NetFx40_LegacySecurityPolicy enabled="true" 参数来处理旧项目。


@LionSoft 我在同一个项目中使用Devexpress控件和Silverlight也遇到了同样的问题。有什么解决方法吗? - Sergey Mirvoda
这里也有同样的问题。DevExpress控件无法工作。看起来我们需要等待DevExpress更新他们的东西。 - Wayne Bloss

1

清理Visual Studio缓存对我有用。

只需按照以下基本步骤操作:

步骤1:清除组件缓存

  1. 关闭Visual Studio(确保任务管理器中不存在devenv.exe)
  2. 删除目录:

%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

如果步骤1无效,则执行以下步骤2:清理用户临时文件夹。删除此目录:%USERPROFILE%\AppData\Local\Temp。如果步骤2无效,则执行以下步骤3:删除所有这些目录:%USERPROFILE%\AppData\Local\Microsoft\Team Foundation%USERPROFILE%\AppData\Local\Microsoft\VisualStudio%USERPROFILE%\AppData\Local\Microsoft\VSCommon。来源链接:https://errorhandlinginskills.wordpress.com/2018/07/28/how-to-clear-visual-studio-cache/

1
那对我有用,然后重新安装查看器。谢谢! - Denis

0
关闭所有扩展工具并重新启动Visual Studio以解决加载自定义查看器的问题。然后,您可以逐个调查扩展工具,并找出干扰Visual Studio的第三方扩展工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接