首页 / 知识

如何使调试 ASP.NET Sharepoint 应用程序的过程更耗时?

2023-04-13 11:18:00

如何使调试 ASP.NET Sharepoint 应用程序的过程更耗时?

How to make the process of debugging ASP.NET Sharepoint applications less time consuming?

我比较的是 Java,您可以在其中以调试模式启动应用程序服务器,然后将 IDE 附加到服务器。您可以"即时"更改代码,而无需重新启动服务器。只要您的更改不影响任何方法签名或字段,您就可以重新编译一个类,应用程序服务器(servlet 容器)将重新加载该类。

我想这在 ASP.NET 中是不可能的,因为所有类都被打包到程序集中,你不能卸载/重新加载程序集,对吗?

因此,当您将 .aspx 页面和程序集部署到 GAC 并且您的代码隐藏更改时,您必须重新部署程序集并重置 IIS。我特别在谈论 Sharepoint 应用程序,我不确定您是否必须为私有程序集执行 iisreset,但我想您也必须这样做。

因此,我猜想调试带有代码隐藏的 aspx 页面的最佳方法是在主动调试期间摆脱代码隐藏并移入页面,然后在或多或少工作时将其移回代码隐藏。 (这仅适用于 Sharepoint 中的应用程序页面,站点页面不允许内联代码)

您如何处理 ASP.NET 应用程序的调试以减少耗时?


来自 Matt Smiths 关于如何使用 sharepoint 进行 F5 调试的博客。一个很酷的技巧。

  • 在 Visual Studio 中创建一个 Web 应用程序项目(文件 - 新建 - 项目 - ASP.Net Web 应用程序,而不是文件 - 新建 - 网站)。
  • 将 .csproj 和 .csproj.user 文件以及 Properties 文件夹移动到 C:\\\\\\\\inetpub\\\\\\\\wwwroot\\\\\\\\wss\\\\\\\\virtualdirectories\\\\\\\\,名称或与您要调试的 SharePoint 网站对应的 Web 应用程序的编号。
  • 将项目附加到现有解决方案(例如 STSDEV 项目)。
  • 设置为启动项目(右键单击项目名称,"设置为启动项目")。
  • 访问项目属性(右键单击项目名称,"Properties")并单击
  • 在"服务器"设置下,单击"使用 IIS Web 服务器",然后输入您要调试的 SharePoint Web 应用程序的 URL,例如http://mymachine:99。

  • 是的,私有程序集不需要重置 IIS。因此,您应该将新版本 xcopy 到应用程序的 Bin 目录并刷新页面(例如,像我一样通过 VS post build 事件)。
    但也有一些取舍。您应该降低应用程序 web.config 文件中的信任级别:

    1
    2
    3
    4
    5
    system.web
        ...
        trust level="WSS_Medium" originUrl="" /
        ...
    /system.web

    顺便说一句。我不建议这样部署。它只是舒适的写测试调试周期长度的解决方法。


    如果您使用的是 GAC,您至少可以使用 iisapp.vbs /a"App Pool Name" /r 而不是 iisreset(回收单个应用程序池比重新启动 IIS 更快)。


    首先,在运行 SharePoint 的计算机上进行开发。最好,这意味着在 Virtual PC 或 VMWare 上运行 Windows Server 2003。这将使您可以直接部署和调试 SharePoint 代码,而不必在服务器之间复制文件并使用远程调试器。

    使用 VS 插件来简化部署和调试过程。我一直在使用 WSPBuilder,但我认为还有其他的。 WSPBuilder 具有部署解决方案、将它们打包为 WSP 并将调试器附加到本地 IIS 进程的命令。它不允许您即时添加/删除程序集,但您可以设置断点并通过 VS 中的即时窗口运行代码。

    根据您的生产服务器的配置方式,通常最好在具有完全/信任安全设置的服务器上进行开发,包括在 ASPX 文件中禁止代码块。这使调试变得更加困难,但它减少了当您的代码最终部署到生产环境时您会遇到的令人讨厌的意外的数量。


    您似乎正在尝试告诉 Sharepoint"当我在 Visual Studio 中开始调试时,请使用在项目的 /bin/debug 目录中编译的 DLL 版本,而不是在 GAC 中注册的 DLL 版本。" 我还没有解决这个问题,但这是我调试 Sharepoint 的方法。

    开发者机器是安装了 Win2008、IIS 7、MOSS 2007、VisStudio 2008 和 WSP Builder。在VS2008里面,增加了一个按钮附加到w3p.exe进程,Andrew\\'s HOWTO attach to w3p

    解决方案文件有两个项目:
    * 第一个项目是部署所有应用程序页面的 .WSP,包括 DLL。使用 WSPBuilder 菜单项来处理 .WSP 创建和部署。
    * 第二个项目是用于页面后面的 DLL。

    如果您希望定期将 DLL 复制到 GAC,请将构建后事件添加到从 /bin/Debug 复制到 GAC 的 DLL 项目中。但是,这些天来,我发现我刚刚重新编译解决方案,然后使用菜单项部署 .WSP,然后使用按钮启动调试器。我的大多数项目都需要一个 F 键和 3 次点击,大约需要一分钟,但我想它可能会更快。


    WSPBuilder Extensions 有一个"部署到 GAC"的快捷方式,不幸的是它对我不起作用。但它是一种非常快速的代码编译测试方法。

    如果您没有使用 WSPBuilder 扩展,您可以改为打开命令提示符并运行

    gacutil /u yourassemblynamegoeshere
    gacutil /i yourdllgoeshere.dll

    如果您经常这样做,您可以将其放在构建后事件或批处理文件中。另外,我不清楚是否需要 gacutil /u(首先删除 DLL)。


    使用自动化测试框架 (NUnit) 编写集成测试。这并不适用于所有情况,但当然,这取决于您要测试的内容。

    如果您还安装了 TestDriven.NET,则可以使用调试器运行单独的测试。这很有帮助。


    And you can change your code"on the fly" without restarting the server

    如果您创建一个网站项目(与 Web 应用程序项目相对),您可以使用 ASP.net 完成此操作。使用网站项目,您可以将更改发布到代码隐藏,而无需刷新服务器上的任何内容,并且服务器会为您完成所有代码更改的编译工作。有关这方面的更多信息,请参见此处。

    这也应该可以解决您在将程序集部署到 GAC 时遇到的困难。由于服务器处理网站项目的所有编译,因此您不必在更改文件时重新部署任何程序集。


    调试应用程序服务器启动

    最新内容

    相关内容

    热门文章

    推荐文章

    标签云

    猜你喜欢