调试SharePoint 2007代码

5
你如何调试SharePoint 2007代码?由于SharePoint运行在远程服务器上,而我正在使用Windows XP机器进行开发(已将必要的.dll文件复制到我的GAC中),因此我没有找到易于调试的简单方法。断点不起作用等。
我想到的最好的方法是在web.config文件中启用页面跟踪,在我的代码中编写跟踪消息,并在需要调试时访问trace.axd。
有没有更好的调试建议?我有什么遗漏吗?
5个回答

3

以下是关于it技术的翻译内容,摘自Andrew Connell博客文章

如何连接调试器到GAC'd程序集: "为什么我的断点没有被触发?!" 你有过这样的经历吗?我也有......真是太麻烦了!出了什么问题?嗯,程序集在GAC中,但Visual Studio调试器无法看到调试符号(即:*.pdb)。除非你已经设置了一个符号存储库来存放所有的PDB文件,否则你需要将调试符号放在与程序集相同的位置上。要找到包含DLL的文件夹,关键是要知道在GAC中哪个文件夹。

c:\windows\assembly文件夹并不是一个真正的文件夹,它是一个虚拟文件夹。要进入真正的文件夹,请按照以下步骤进行:

  • 开始 » 运行
  • %systemroot%\assembly\gac [回车]

这将打开GAC文件夹。现在,浏览文件夹,直到你找到一个看起来像这样的文件夹(你可能需要跳到上一级文件夹并进入MSIL文件夹):[程序集文件名-.DLL扩展名][程序集版本,格式为> #.#.#.#]__[程序集公钥令牌]

当你找到那个文件夹时,打开它,你会看到你的程序集。将PDB文件复制到该文件夹中,然后连接调试器进行调试!


只要当前项目的输出目录中存在相应的PDB文件,当您连接到进程时,您也可以对远程机器上的全局程序集进行调试。我经常在远程机器上对MOSS程序集进行调试,而无需将PDB复制到GAC中。 - Eric Schoonover

3

最佳方式(甚至被微软认可的)是使用Windows 2003服务器作为您的本地开发机,并安装Sharepoint。

参见此主题


2
不要将程序集放入全局程序集缓存(GAC),而应将它们放入 bin 目录,这样您就可以使用 VS 远程调试器。请搜索创建 .WSP 文件以进行分发。
这样做的优点还包括更容易将编译后的新版本复制到服务器上(后构建步骤),同时这也是增强安全性的推荐方法。

有时候不得不放弃对程序集的全局缓存(not-gac'g),这并不是一个好的选择。特别是当你需要重新制作你的WSP并重新部署时,这将是一个痛苦的过程,如果你只是想调试一个无法通过其他方式找到的错误(这是我目前遇到的问题)。 - Matthew Bonig

1

我建议您在安装了Sharepoint的Windows 2003服务器上进行开发。在远程服务器上调试很麻烦。 如果您的工作站上有XP系统,可以使用VMware或Virtual PC中的虚拟机进行开发。


1

虚拟机是唯一的选择。除非你有多余的机器,否则你不希望将整个机器用于开发;在生产服务器上进行开发只会带来麻烦。我更喜欢VMware,但也有其他一些同样好用的程序。

跟踪工作良好,因为通常调试并不是一个好的选项。

另外我做的是尝试在一个普通的asp.net网站上开发所有逻辑(那些与SharePoint无关的内容),然后在测试完成之后将其集成到SharePoint中。

希望这讲得清楚。

你是在谈论开发网页部分吗?自定义页面?还是其他什么东西?


嗯——使用虚拟机与原始问题无关(尽管它们非常有用)。 - Ryan
为什么正常的调试不是一个真正的选择?我似乎一直做得很好 :) - Eric Schoonover
我知道,我只是想把它加进来。我解释说,我尝试在我的正常非SharePoint环境中(Visual Studio)进行调试,因为在SP环境中进行调试很困难。 - naspinski

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