title: DacFx DeploymentPlanExecutor OnExecute not called
body: <p>I'm trying to program a custom <code>DeploymentPlanExecutor</code> using Microsofts DacFx 3.0 but the <code>OnExecute</code>-Method is never called. </p>
  
  <ul>
  <li>If I use an identical <code>DeploymentPlanModifier</code> instead, <code>OnExecute()</code> is called as expected. </li>
  <li>No matter whether I add the Executor, the Modifier, or both, the DAC actually is successfully deployed to the Database. </li>
  <li>The Executor seems to be recognized during the Deployment since <code>OnApplyDeploymentConfiguration()</code> is called</li>
  </ul>
  
  <p>Unfortunately I wasn't able to find any examples that use an <code>DeploymentPlanExecutor</code> (only examples with <code>DeploymentPlanModifier</code>) and the documentation of DacFx does not help at all.</p>
  
  <p>My question is, why is <code>OnExecute()</code> in the <code>DeploymentPlanExecutor</code> not called and how can I fix this?</p>
  
  <p>The code for my <code>DeploymentPlanExecutor</code> and <code>DeploymentPlanExecutor</code>:</p>
  
  <pre><code>using System.Collections.Generic;
  using Microsoft.SqlServer.Dac.Deployment;
  
  namespace DacTest
  {
      // The executor that does not work as expected
      [ExportDeploymentPlanExecutor(ContributorId, "1.0.0.0")] 
      public class Executor : DeploymentPlanExecutor
      {
          public const string ContributorId = "DacTest.Executor";
  
          protected override void OnApplyDeploymentConfiguration(DeploymentContributorContext context, ICollection&lt;DeploymentContributorConfigurationStream&gt; configurationStreams)
          {
              // Called
          }
  
          protected override void OnEstablishDeploymentConfiguration(DeploymentContributorConfigurationSetup setup)
          {
              // Not called
          }
  
          protected override void OnExecute(DeploymentPlanContributorContext context)
          {
              // Not called!
          }
      }
  
     // The modifier that does work as expected
     [ExportDeploymentPlanModifier(ContributorId, "1.0.0.0")] 
      public class Modifier : DeploymentPlanModifier
      {
          public const string ContributorId = "DacTest.Modifier";
  
          protected override void OnApplyDeploymentConfiguration(DeploymentContributorContext context, ICollection&lt;DeploymentContributorConfigurationStream&gt; configurationStreams)
          {
              // Called
          }
  
          protected override void OnEstablishDeploymentConfiguration(DeploymentContributorConfigurationSetup setup)
          {
              // Not called
          }
  
          protected override void OnExecute(DeploymentPlanContributorContext context)
          {
              // Called!
          }
      }
  }
  </code></pre>
  
  <p>The code calling the deployment (has to be in a different assembly):</p>
  
  <pre><code>using (DacPackage dacpac = DacPackage.Load(@"C:\Temp\dac.dacpac"))
  {
      DacDeployOptions dacDeployOptions = new DacDeployOptions();
      dacDeployOptions.AdditionalDeploymentContributors = Executor.ContributorId; // + ";" + Modifier.ContributorId;
  
      DacServices dacServices = new DacServices(connectionString);
      dacServices.Deploy(dacpac, databaseName, true, dacDeployOptions);
  }
  </code></pre>