2016-06-09 30 views
0

我正在编写一些与Umbraco v7集成的代码,目前特别与Umbraco Forms扩展一起使用,但在不久的将来与CMS本身一起使用。我已经将Umbraco程序集编入我的VS项目中,并通过遵循this article中描述的步骤来创建一个包含所有相关程序包和定制的工作实例。如何调试扩展Umbraco 7的项目?

我有第二个项目,姑且称之为Project2的中会产生,我会在生产下探到一把umbraco的文件夹的DLL,让CMS自动挂机行动解决方案附加功能。

到目前为止一切顺利,但我遇到了一个问题 - 调试。如果我将Project2 dll放入Umbraco中,我可以使用Umbraco记录器来生成输出消息,但这对于调试更复杂的代码来说是极其不足的,而不是令人沮丧地耗费时间。但我看不到我如何在运行时将Visual Studio调试器连接到Project2。任何人都可以提出我可以利用的技术吗?

+0

你在本地运行吗?你有没有试图附加你的调试器? – Mario

+0

我正在IIS Express中运行Umbraco实例,并在构建完成后手动将Project2 dll放入bin文件夹。这不与调试器一起玩。 – 5arx

回答

0

我有点想通了this post的帮助,它至少让我能够像事件发布一样,用我自己的代码发布,其中可以在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. 
         } 
         ... 
        } 
    

唷!希望这可以帮助某人。