我试图在.net(c#)中添加一个未处理的异常处理程序,该处理程序对于'user'应该尽可能有用.最终用户大多是程序员,所以他们只需要暗示他们操纵错误的对象.
当应用程序崩溃时,我正在开发类似于Windows XP错误报告的窗口,但是尽可能多地提供关于抛出的异常的中间信息.
虽然堆栈跟踪使我(因为我有源代码)能够查明问题的根源,但是用户没有它,因此它们在没有进一步信息的情况下丢失.不用说我必须花很多时间来支持这个工具.
有一些系统异常,如Dictionary集合抛出的KeyNotFoundException,它真的让我感到烦恼,因为它们没有在消息中包含未找到的密钥.我可以使用大量的try catch块来填充我的代码,但它相当激进并且需要维护更多的代码,更不用说更多的字符串必须最终被本地化.
最后一个问题:有没有办法获得(在运行时)调用堆栈跟踪中每个函数的参数值?仅这一点就可以解决90%的支持电话.
列出所有可用的.NET 2.0程序集的最佳方法是什么?
所需列表的一个示例是当您在.NET选项卡中执行"添加引用..."时,MS Visual Studio会显示一个.
我读过Visual Studio使用自己的目录配置和GAC另一个和.NET安装另一个.有关如何以计算机可移植方式知道此目录的位置的任何想法(例如,另一台计算机可能在D:驱动器中安装了Windows)?
从列出的信息来看,它必须是Assembly.Loadxxxx()它.
注意:它应该以编程方式完成,而不是使用gacutil(例如,除非它提供了C#API).所有这一切的目的是创建一个自定义动态脚本编辑器,以便您了解获取此信息的必要性.
我在理解移位/缩小语法的问题时遇到了问题,我知道语法没有歧义.这个案例是if else类型之一,但它不是'悬空的'问题,因为我有强制的END子句来分隔代码块.
这是gppg的语法(它是一个像编译器编译器一样的Bison ......而且它不是一个echo):
%output=program.cs
%start program
%token FOR
%token END
%token THINGS
%token WHILE
%token SET
%token IF
%token ELSEIF
%token ELSE
%%
program : statements
;
statements : /*empty */
| statements stmt
;
stmt : flow
| THINGS
;
flow : '#' IF '(' ')' statements else
;
else : '#' END
| '#' ELSE statements '#' END
| elseifs
;
elseifs : elseifs '#' ELSEIF statements else
| '#' ELSEIF statements else
;
Run Code Online (Sandbox Code Playgroud)
这是冲突输出:
// Parser …Run Code Online (Sandbox Code Playgroud) 我正在开发一个插件主机.插件应该具有他们需要的尽可能少的信任,但是我希望插件可以读取和写入文件.
加载程序集的AppDomain是否可以限制只能访问一个目录进行读写?
其他选项和方法也很受欢迎,例如将文件数据从主机流式传输到插件(读取)以及从插件流向主机(写入)的简单方法.
如果相关:我正在使用MAF基础设施插件. http://msdn.microsoft.com/en-us/library/bb384200.aspx