Jak to zrobić? Czy można wywołać funkcję z jednego kodu F # do C# bez używania oddzielnego pliku dll lub projektu?Czy można mieszać pliki .cs (C#) i .fs (F #) w pojedynczym projekcie konsoli programu Visual Studio? (.NET)
Odpowiedz
Nie można uwzględnić dwóch różnych języków w tym samym projekcie, ale można je połączyć za pomocą ilmerge. Aby to zrobić, umieść oba projekty w tym samym rozwiązaniu i odwołaj się do modułu F #, tak jak w przypadku każdej biblioteki DLL. Jako część skryptu wdrażania uruchom program ilmerge, aby połączyć plik exe i plik dll w pojedynczy plik exe. Zobacz ten artykuł Code Project, który opisuje, jak użyć ilmerge do utworzenia exe.
Nie. Jeśli chcesz utworzyć jeden .exe, możesz użyć niektórych opcji linku statycznego f #, korzystając z przełącznika komandolinowego F # --full-help, który zawiera więcej szczegółów.
Nie można mieszać C# i F # w tym samym projekcie powoduje problem; Prowadzi to do kołowych zależności między dwoma projektami. Konceptualnie istnieje tylko jeden projekt zawierający dwa języki, ale ze względu na sposób, w jaki studio wizualne zarządza projektami, języki nie mogą być mieszane, co prowadzi do kołowych zależności.
Na razie jedyne rozwiązanie, które widzę, aby stworzyć wiele interfejsów w trzecim projekcie i jeden z projektów odnosi się do projektu interfejsów, zamiast do prawdziwego projektu. Czy istnieje lepszy sposób?
poważaniem Nick
Doskonały komentarz i pytanie, ale nie zwrócisz na to uwagi, dopóki nie napiszesz go jako pytania. –
+1 Widziałem kilka komercyjnych projektów uciekających się do używania ILMerge, aby uzyskać C# i F # w tym samym zespole. Microsoft powinien właściwie obsługiwać ILMerge i osadzać go w Visual Studio, zamiast zostawiać jednego pracownika na wypuszczanie oprogramowania wydającego alfa. –
Nie można skompilować pliki # źródłowych F (.fs) w projekcie C#, ale można dodać F pliki # script (.fsx), które można wykorzystać do odniesienia i odkrywania zespół projektu C# od F # interaktywne:
public static class Math
{
public static double PowN(double d, int n)
{
var result = 1;
for (int i = 0; i < n; i++) result *= d;
return result;
}
}
F # plik skryptu (.fsx):
#r "bin\debug\ClassLibrary1.dll"
Math.PowN(2.0,3)
Kompilujemy F # kod "dekompilować" z dowolnego narzędzia (jak reflektor, i lspy) do kodu C#, dołącz go do projektu -> Zysk!
- 1. Czy mogę mieszać C++ i C w jednym projekcie w Visual Studio?
- 2. Okno okna konsoli programu Visual Studio
- 3. Czy można mieszać języki .net w ramach jednego projektu?
- 4. Używanie niestandardowej konsoli do debugowania aplikacji konsoli programu Visual Studio
- 5. Pliki połączone programu Visual Studio nie istnieją.
- 6. Testowanie rodzimych wersji programu Visual Studio: Wyjście debugowania/konsoli?
- 7. Czy mogę mieszać JS i CoffeeScript w projekcie?
- 8. Pliki zasobów CMake i Visual Studio
- 9. Odświeżenie programu Visual Studio 2010
- 10. .less pliki CSS w .NET i Visual Studio
- 11. F #, przestrzenie nazw, moduły, fs i fsx
- 12. C# skopiować, wkleić formularz w projekcie Visual Studio
- 13. Czy można używać C# 4.0 z Visual Studio 2008?
- 14. W projekcie instalacji programu Visual Studio: Jak wygenerować skrypt odinstalowujący?
- 15. Czy można wyłączyć animację autouzupełniania w dokowaniu programu Visual Studio?
- 16. W MSBuild można ustalić, czy używam programu Visual Studio
- 17. Formatowanie - naraz - wszystkie pliki w projekcie Visual Studio
- 18. Pex i F # w Visual Studio 2010 Ostateczny
- 19. Gdzie mogę wprowadzić zależności DLL w projekcie Visual Studio C++?
- 20. testowe dane wejściowe/wyjściowe aplikacji konsoli programu Visual Studio 2012
- 21. Czy aktualizacje programu Visual Studio 2012 przerywają C++ ABI?
- 22. Zapobieganie zagnieżdżaniu się programu Visual Studio Pliki maszynowe
- 23. Czy można mieszać AudioServicesPlaySystemSound i AVAudioPlayer?
- 24. Visual Studio 2012 Express i .NET 2.0
- 25. Selektor plików programu Visual Studio
- 26. Wymagania C# 7 .NET/CLR/Visual Studio
- 27. C# 6.0 bez Visual Studio
- 28. Non Visual Studio F # IDE
- 29. Dlaczego liczby podwójne są niepoprawnie dodane w konkretnym projekcie programu Visual Studio 2008?
- 30. Czy program MSBuild wymaga zainstalowania programu Visual Studio?
Przełącznik statycznego łącza F # tak samo, jak ilmerge. – Robert