Jeśli mam punkt przerwania w programie C# chciałbym użyć F # REPL do sprawdzenia mojego kodu . Czy jest to możliwe w jakikolwiek sposób?Czy istnieje sposób w Visual Studio 2012 do użycia F # REPL podczas debugowania C#
Odpowiedz
Powinieneś być w stanie debugować projekt C# za pomocą F # REPL - robię to podczas debugowania projektów bibliotek F #, ale aplikacje/biblioteki C# również będą działały (myślę).
Skompiluj projekt C#. W języku F #, odwołaj się do zestawu C#, używając dyrektywy #r
(patrz post ArthurFSharp). Wstaw punkt przerwania gdzieś w twoim kodzie C#.
W Visual Studio przejdź do Tools
->Attach to Process
. Znajdź Fsi.exe
na liście procesów i kliknij go dwukrotnie; jeśli go tam nie widzisz, upewnij się, że proces Fsi został uruchomiony (wystarczy kliknąć w oknie F # Interactive).
W F # Interactive, wykonaj trochę kodu, który osiągnie ustawiony punkt przerwania; debugger powinien zatrzymać wykonywanie w punkcie przerwania, tak jak chcesz. Tak długo jak debugger nie jest zatrzymywany w pewnym punkcie przerwania, możesz również wykonać inny kod z poziomu FSI, na przykład aby zmienić ustawienia w uruchomionej aplikacji C#.
WAŻNE: Należy pamiętać, że system Windows blokuje zestaw po załadowaniu go do procesu. Oznacza to, że nie będzie można przekompilować aplikacji C#, dopóki otwarty jest FSI! Poprawka jest prosta - po wprowadzeniu pewnych zmian w aplikacji C# i ponownym skompilowaniu i rozpoczęciu testowania ponownie, kliknij prawym przyciskiem myszy w oknie F # Interactive i kliknij "Resetuj interaktywną sesję" w menu kontekstowym. Proces zostanie zabity i uruchomiony ponownie, abyś mógł zacząć wszystko od nowa. (Jeśli zapomnisz zrestartować proces FSI i spróbujesz przekompilować swoją aplikację, kompilacja potrwa nieco dłużej niż normalnie, wtedy pojawi się komunikat o błędzie informujący, że kompilator nie mógł zapisać do pliku wyjściowego.)
Jeszcze łatwiejszym sposobem dołączenia debuggera jest wywołanie System.Diagnostics.Debugger.Launch() z poziomu skryptu F #. –
Musisz podać ścieżkę do projektu za pomocą dyrektywy #I
, a następnie możesz załadować swój zespół i użyć go. Następnie załaduj zespół (dyrektywa #r), otwórz przestrzeń nazw, a następnie możesz wywołać metody (i sprawdzić wynik).
na przykład:
using System;
namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
PrintMessage();
}
public static void PrintMessage()
{
Console.WriteLine("Hello World!");
}
}
}
A w F # Interactive:
> #I "full path to debug directory";;
--> Added 'full path to debug directory' to library include path
> #r "ConsoleApplication1.exe";;
--> Referenced 'full path to debug directory\ConsoleApplication1.exe'
> open ConsoleApplication1;;
> Program.PrintMessage();;
Hello World!
val it : unit =()
PS: potrzeba opracowania projektów pierwszy.
Pytanie dotyczyło wstawienia punktu przerwania w języku C#, a następnie zobaczenia go w F # REPL. Jest to o wiele trudniejsze - w rzeczywistości wymaga to znacznego oszustwa. –
- 1. Czy istnieje sposób użycia oczekujących zmian w programie Visual Studio 2010/Eksploratora zespołu w programie Visual Studio 2012?
- 2. Visual Studio 2012 "Nie można rozpocząć debugowania"
- 3. Ignoruj projekt w Visual Studio podczas debugowania
- 4. W jaki sposób Visual Studio wyświetla System.Double podczas debugowania?
- 5. Czy istnieje sposób na ponowne uruchomienie FSI w Visual Studio?
- 6. Test jednostki C++ w Visual Studio 2012
- 7. Jak skonfigurować SDL 2.0 do użycia z Visual Studio 2012?
- 8. Czy istnieje sposób użycia Matlab Image Processing Toolbox w F #?
- 9. Visual Studio: edytuj xaml podczas debugowania (bez zatrzymywania debugowania)
- 10. Debugowania shaderów na Visual Studio 2012, nie można znaleźć symbole
- 11. Visual Studio: Edytuj plik XAML podczas debugowania
- 12. Czy aktualizacje programu Visual Studio 2012 przerywają C++ ABI?
- 13. Visual Studio 2012 częściowe publikowanie
- 14. Sfrustrowany Visual Studio 2012 na Windows Server 2012
- 15. W jaki sposób Visual Studio ocenia właściwości podczas debugowania w języku C#?
- 16. Visual Studio 2012 zdalnego debugowania Kernel Virtual Machine
- 17. Zmuszony do odbudowy Depedencje projektu w Visual Studio 2012
- 18. Czy istnieje sposób w Visual Studio 2012, aby wyświetlić dziennik błędów operacji aktualizacji usługi odniesienia
- 19. Czy istnieje jakiś sposób zapisywania obiektów na dysku w programie Visual Studio 2012?
- 20. wywoływanie funkcji podczas debugowania w programie Visual Studio 2005?
- 21. C#: Czy istnieje sposób użycia wyrażeń jako zmiennej/parametru?
- 22. Program Visual Studio 2012 narusza wyjątki JavaScriptu podczas debugowania w programie Internet Explorer 9
- 23. RunAs Inny użytkownik podczas debugowania w programie Visual Studio
- 24. Czy Visual Studio 2012 obsługuje XAML 2009?
- 25. użyciu OpenSSL w Visual Studio 2012
- 26. Curly szelki autouzupełnianie w Visual Studio 2012
- 27. Jak wymusić wyjątek podczas debugowania w programie Visual Studio?
- 28. Visual Studio 2012 Express i .NET 2.0
- 29. Filtrowanie listy obiektów podczas debugowania w programie Visual Studio 2013
- 30. C# do pisania makr w Visual Studio?
Sprawdź bezpośrednie okno w Visual Studio. To nie jest F # REPL, ale jest całkiem użyteczne. –
Bezpośrednie okno w C# jest niedorzeczne, ponieważ nie możesz używać lambdas – bradgonesurfing
. Zgadzam się, to bardzo frustrujące. Ale nadal uważam, że używam go w rozsądnej ilości. –