如何从代码启动Windows Azure存储模拟器V3.0

huh*_*uha 5 c# azure azure-storage azure-storage-emulator

自从我安装了新的Windows Azure SDK 2.3后,我收到了来自csrun的警告:

"通过CSRun的DevStore交互已被删除.请改用WAStorageEmulator.exe."

所以有两个问题:1)如何从代码中正确启动新的存储模拟器?2)如何从代码中确定存储模拟器是否已在运行?

huh*_*uha 5

我自己找到了解决方案.这是我的C#代码.用于SDK 2.2的旧代码已注释掉.

public static void StartStorageEmulator()
{
    //var count = Process.GetProcessesByName("DSServiceLDB").Length;
    //if (count == 0)
    //  ExecuteCSRun("/devstore:start");
    var count = Process.GetProcessesByName("WAStorageEmulator").Length;
    if (count == 0)
        ExecuteWAStorageEmulator("start");
}

/*
private static void ExecuteCSRun(string argument)
{
    var start = new ProcessStartInfo
    {
        Arguments = argument,
        FileName = @"c:\Program Files\Microsoft SDKs\Windows Azure\Emulator\csrun.exe"
    };
var exitCode = ExecuteProcess(start);
Assert.AreEqual(exitCode, 0, "Error {0} executing {1} {2}", exitCode, start.FileName, start.Arguments);
}
*/

private static void ExecuteWAStorageEmulator(string argument)
{
    var start = new ProcessStartInfo
    {
        Arguments = argument,
        FileName = @"c:\Program Files (x86)\Microsoft SDKs\Windows Azure\Storage Emulator\WAStorageEmulator.exe"
    };
    var exitCode = ExecuteProcess(start);
    Assert.AreEqual(exitCode, 0, "Error {0} executing {1} {2}", exitCode, start.FileName, start.Arguments);
}

private static int ExecuteProcess(ProcessStartInfo start)
{
    int exitCode;
    using (var proc = new Process { StartInfo = start })
    {
        proc.Start();
        proc.WaitForExit();
        exitCode = proc.ExitCode;
    }
    return exitCode;
}
Run Code Online (Sandbox Code Playgroud)