Pergunta

Estou tentando usar o CoreCon API no Visual Studio 2008 para iniciar programaticamente emuladores de dispositivo.Quando eu chamo device.Connect(), Eu inexplicavelmente obter um DirectoryNotFoundException.Eu chego se eu tentar no PowerShell ou no C# Consola de Aplicação.Aqui está o código que estou usando:

static void Main(string[] args)
{
     DatastoreManager dm = new DatastoreManager(1033);
     Collection<Platform> platforms = dm.GetPlatforms();

     foreach (var p in platforms)
     {
        Console.WriteLine("{0} {1}", p.Name, p.Id);
     }

     Platform platform = platforms[3];
     Console.WriteLine("Selected {0}", platform.Name);

     Device device = platform.GetDevices()[0];
     device.Connect();
     Console.WriteLine("Device Connected");

     SystemInfo info = device.GetSystemInfo();
     Console.WriteLine("System OS Version:{0}.{1}.{2}",info.OSMajor, info.OSMinor, info.OSBuildNo);

     Console.ReadLine();
}

Alguém sabe por que eu estou recebendo este erro?Estou executando esta no WinXP 32 bits, jane Visual Studio 2008 Pro.Imagino que alguns config problema, já que eu não posso fazer isso a partir de um aplicativo de Console ou PowerShell.

Aqui está o rastreamento de pilha:

System.IO.DirectoryNotFoundException was unhandled

Message="The system cannot find the path specified.\r\n"

Source="Device Connection Manager"

StackTrace:
       at Microsoft.VisualStudio.DeviceConnectivity.Interop.ConManServerClass.ConnectDevice()
       at Microsoft.SmartDevice.Connectivity.Device.Connect()
       at ConsoleApplication1.Program.Main(String[] args) in C:\Documents and Settings\Thomas\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs:line 23
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
Foi útil?

Solução

Ele pode ser encontrado em <systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin.

Este é o caminho onde você pode obter essa dll, então adicione esta dll para o seu projecto.

Outras dicas

Instalar o VS 2008 SP 1 fixo para mim.

Eu suspeitar que há um problema com a minha Microsoft.VisualStudio.DeviceConnectivity.Assembly de interoperabilidade.Não existe nenhuma cópia do que no disco que eu possa encontrar.É no GAC só.Eu tentei inspecionar no Reflector, mas ele precisa que o assembly de Interoperabilidade também.Desde ConManServerClass é, obviamente, COM, talvez, há uma biblioteca COM o que tem de ser registado?

Eu tentei isso e funciona ok.Você pode colar em toda a exceção e rastreamento de pilha?

Atualizado: Estranhamente eu não posso achar que a interoperabilidade assy no meu computador ou outros que, sob a c:\windows\assembly\GAC_MSIL pastas.

Por que não o fogo até SysInternals FileMon ou Monitor de Processo, é melhor guardar algumas suposições.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top