2009-01-21 5 views

Odpowiedz

21

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.

+2

Przełącznik statycznego łącza F # tak samo, jak ilmerge. – Robert

12

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.

15

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

+6

Doskonały komentarz i pytanie, ale nie zwrócisz na to uwagi, dopóki nie napiszesz go jako pytania. –

+4

+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. –

6

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) 
0

Kompilujemy F # kod "dekompilować" z dowolnego narzędzia (jak reflektor, i lspy) do kodu C#, dołącz go do projektu -> Zysk!

Powiązane problemy