Execute DTExec file via Command Line

142 Views Asked by At

I've got a dotnet core 6 project where I need to execute SSIS packages via dtexec.

So far I have the following code:

  private void ExecutePackage()
    {
        var processOutput = string.Empty;
        var processErrorOutput = string.Empty;

        
         var command = @"/C dtexec /file ""C:\git\star\tests\Star.Shared.UnitTests\test-artifacts\TestPackage.dtsx""";
        var process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.Arguments = command;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.RedirectStandardOutput = true;

        process.Start();

        processOutput = process.StandardOutput.ReadToEndAsync().Result;
        processErrorOutput = process.StandardError.ReadToEndAsync().Result;
        if (processOutput != string.Empty)
        {
            _logger.LogInformation("{output}", processOutput);
        }

        if (processErrorOutput != string.Empty)
            _logger.LogError("{errors}", processErrorOutput);

    }

When running this via my unit test, it just seems to hang and I'm unsure as to why.

On one of my previous attempts to get this file to run I got the following message:

An error occurred trying to start process 'dtexec /file "C:\git\star\tests\Star.Shared.UnitTests\test-artifacts\Test_Package.dtsx' with working directory 'C:\git\star\tests\Star.Shared.UnitTests\bin\Debug\net6.0'. The system cannot find the file specified.

Which is telling me that the last time I ran this, it was looking in my tests bin folder for the package instead of where the package is stored.

Is there a setting that I'm missing / set wrong?

0

There are 0 best solutions below