如何调试扩展Umbraco 7的项目?

时间:2016-06-09 21:53:30

标签: visual-studio visual-studio-debugging umbraco7

我正在编写一些与Umbraco v7集成的代码,目前专门针对Umbraco Forms扩展,但在不久的将来会与CMS本身一起使用。我已经将Umbraco程序集编入我的VS项目中,并按照this article中描述的步骤创建了一个包含所有相关程序包和自定义项的工作实例。

我有第二个项目,让我们在解决方案中将其命名为 Project2 ,这将生成DLL我将在生产中放入Umbraco的 bin 文件夹 < / em>允许CMS自动连接到其他功能。

到目前为止一切都很好,但我遇到了问题 - 调试。如果我将Project2 dll放入Umbraco,我可以使用Umbraco记录器生成输出消息,但这对于调试更复杂的代码来说是非常不合适的,更不用说令人沮丧的耗时。但我无法看到如何在运行时将Visual Studio调试器连接到Project2。任何人都可以建议我可以使用的技术吗?

1 个答案:

答案 0 :(得分:0)

我在this post的帮助下想出来了,至少可以让我用我自己的代码(例如可以调试)来处理像Published这样的事件。在VS。

技术是这样的:

  1. 编辑主Umbraco项目中的Global.ascx文件,以便它在Project2中使用自定义Global.cs文件。当然,您必须在主要的Umbraco项目中添加对Project2的引用才能执行此操作。这是你的钩子。

    <%@ Application Inherits="Project2.Global" Language="C#" %>
    
  2. 在此文件(在Project2中)中,您可以为各种Umbraco事件附加自定义处理程序。从这一点开始,所有钩子都可以让你调试自定义代码。在那里打一些断点并亲吻LogHelper再见; - )

       public class Global : UmbracoApplication
       {
           public override void Init()
           {
               var application = this as HttpApplication;
               //Hook up your event handlers as required.
               application.PreRequestHandlerExecute += PreRequestHandlerExecute;
           ContentService.Published += ContentService_Published;
               base.Init();
           }
           //Custom logic which you can step-through in VS.
           private void ContentService_Published(IPublishingStrategy sender,
        PublishEventArgs<Umbraco.Core.Models.IContent> e)
           {
               LogHelper.Info(this.GetType(), "Caught Publish event " + e.PublishedEntities.FirstOrDefault().Name);  //very droll.
           } 
            ...
        }
    
  3. 唷!希望这有助于某人。