Eine C# -WPF-Anwendung, an der ich arbeite, enthält viele Aufrufe an eine nicht verwaltete externe DLL. Alle Aufrufe der DLL funktionieren wie erwartet, wenn die Anwendung normal ausgeführt wird (d. H. Außerhalb des Visual Studio-Debuggers). Wenn jedoch in Visual Studio 2013 debuggen, ein Anruf an eine bestimmte Methode in der DLL stürzt die Anwendung:Irgendeine Idee, was verursachen kann, "vshost32.exe funktioniert nicht mehr" in Visual Studio 2013?
Dies ist, wie ich importieren Sie die Methode:
[DllImport("Client.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern string ClientGetVersion();
... und das ist, wie ich die DLL-Methode aufrufen:
try
{
version = ClientGetVersion();
}
catch (Exception ex)
{
// Error handling omitted for clarity...
}
Es scheint, dass Visual Studio die vshost32.exe Prozess verwendet Anwendungen während einer Debug-Host Ging-Sitzung (VSHOST - the Hosting Process). Darüber hinaus können "Aufrufe an bestimmte APIs beeinflusst werden, wenn der Hosting-Prozess aktiviert ist. In diesen Fällen ist es notwendig, den Hosting-Prozess zu deaktivieren, um die korrekten Ergebnisse zurückzugeben." (Siehe den MSDN-Artikel How to: Disable the Hosting Process). Das Deaktivieren des „Aktivieren Sie den Visual Studio-Hosting-Prozess“ im Projekt> Eigenschaften ...> Debug, wie unten gezeigt, beheben ist in der Tat das Problem:
jemand eine Idee Hat was speziell dies dazu führen könnte, Problem mit "... Aufrufe an bestimmte APIs ..."?
Einfach den Fehler in Ihrem Code beheben. Der Rückgabetyp kann keine Zeichenfolge sein, es muss IntPtr sein. Verwenden Sie dann Marshal.PtrToStringAnsi(), um die Zeichenfolge wiederherzustellen. –
Dank @HansPassant für Ihre schnelle Antwort - das hat es sortiert! – YetMoreStuff