Search code examples
c#azureazure-storage

How to start Azure Storage Emulator from within a program


I have some unit tests that use Azure Storage. When running these locally, I want them to use the Azure Storage emulator which is part of the Azure SDK v1.5. If the emulator isn't running, I want it to be started.

To start the emulator from the command line, I can use this:

"C:\Program Files\Windows Azure SDK\v1.5\bin\csrun" /devstore

This works fine.

When I try to start it using this C# code, it crashes:

using System.IO;
using System.Diagnostics;
...
ProcessStartInfo processToStart = new ProcessStartInfo() 
{   
    FileName = Path.Combine(SDKDirectory, "csrun"),
    Arguments = "/devstore"
};
Process.Start(processToStart);

I've tried fiddling with a number of ProcessStartInfo settings, but nothing seems to work. Is anybody else having this problem?

I've checked the Application Event Log and found the following two entries:

Event ID: 1023 .NET Runtime version 2.0.50727.5446 - Fatal Execution Engine Error (000007FEF46B40D2) (80131506)

Event ID: 1000 Faulting application name: DSService.exe, version: 6.0.6002.18312, time stamp: 0x4e5d8cf3 Faulting module name: mscorwks.dll, version: 2.0.50727.5446, time stamp: 0x4d8cdb54 Exception code: 0xc0000005 Fault offset: 0x00000000001de8d4 Faulting process id: 0x%9 Faulting application start time: 0x%10 Faulting application path: %11 Faulting module path: %12 Report Id: %13


Solution

  • I uninstalled all of the Windows Azure bits:

    • WA SDK v1.5.20830.1814
    • WA Tools for Visual Studio: v1.5.40909.1602
    • WA AppFabric: v1.5.37
    • WA AppFabric: v2.0.224

    Then, I downloaded and installed everything using the unified installer. Everything came back except the AppFabric v2. All the version numbers are the same. Reran my tests and still having a problem.

    And then...(this is weird)...it would work every now and then. Rebooted the machine and now it works. Have shutdown and rebooted a number of times now...and it just works. (sigh)

    Thanks to everyone who provided feedback and/or ideas!

    The final code is:

        static void StartAzureStorageEmulator()
        {
            ProcessStartInfo processStartInfo = new ProcessStartInfo()
            {
                FileName = Path.Combine(SDKDirectory, "csrun.exe"),
                Arguments = "/devstore",
            };
            using (Process process = Process.Start(processStartInfo))
            {
                process.WaitForExit();
            }
        }