如何做到這一點? 是否有可能從一個F#代碼調用一個函數到C#中,而不使用分離的dll文件或項目?是否可以在單個Visual Studio Windows控制檯項目中混合.cs(C#)和.fs(F#)文件? (.NET)
26
A
回答
21
您不能在同一個項目中包含兩種不同的語言,但可以使用ilmerge合併它們。要做到這一點,將這兩個項目放在同一個解決方案中,並像任何dll一樣引用F#模塊。作爲部署腳本的一部分,運行ilmerge將exe文件和dll文件合併爲一個exe文件。看到這篇文章詳細介紹瞭如何使用ilmerge創建一個exe文件。
12
不可以。如果您想生成一個.exe文件,您可以使用f#靜態鏈接選項的某些部分,使用F# - 全部幫助命令行開關來詳細介紹這些選項。
15
不能在同一個項目中混合使用C#和F#會產生問題;它導致兩個項目之間的循環依賴關係。從概念上講,只有一個項目包含兩種語言,但由於Visual Studio管理項目的方式不能混合使用,導致循環依賴。
現在唯一的解決方案,我看到它在第三個項目中創建了很多接口,並且其中一個項目引用接口項目,而不是真正的項目。 有沒有更好的方法?
親切的問候, 尼克
+6
優秀評論和問題,但除非您將其作爲問題發佈,否則您不會受到太多關注。 – 2011-01-01 18:18:27
6
不能在C#項目編譯F#源文件(.FS),但您可以添加F#腳本文件(.fsx),你可以用它來參考和探索C#項目從F#交互式安裝:
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#腳本文件(.fsx):
#r "bin\debug\ClassLibrary1.dll"
Math.PowN(2.0,3)
0
編譯您的F#代碼, 「反編譯」 用任何工具(如反射,我lspy)轉換爲C#代碼,將其包含在一個項目中 - > Profit!
相關問題
- 1. 是否可以使用Visual Studio 6.0 C++打開並執行Visual Studio C++ Win32控制檯應用程序項目?
- 2. 是否可以在Visual Studio項目中指定源文件夾?
- 3. 是否可以在.Net 2 C#項目中使用Telerik控件?
- 4. 我可以在Windows控制檯中使用asp.net web項目文件c#
- 5. Visual Studio中的控制檯cpp項目
- 6. 是否有可能將Visual Studio項目合併到單個文件中?
- 7. 在Visual Studio for Mac中創建C/C++控制檯項目?
- 8. 我可以在Visual Studio中的單個項目中混合使用C++和C嗎?
- 9. 是否可以在C#項目中混合使用x64/x86?
- 10. 在Visual Studio項目中創建「控制檯」和「窗口」配置
- 11. 我可以在Visual Studio 2010中混合使用Qt和非Qt項目嗎?
- 12. C#Windows窗體.Net和DOS控制檯
- 13. 將Visual C++控制檯項目轉換爲Forms項目(Visual Studio 2010)
- 14. 混合問題目標C和C++在單個文件中
- 15. visual studio項目部署文件混淆?
- 16. 在Visual Studio Express 2012 for Windows桌面(Windows 7)中組合C++和c#項目
- 17. 在Visual Studio中混淆.cs源本身
- 18. Windows Mobile兼容的ActiveX控件是否可以使用Visual Studio 2008在.NET C#中創建?
- 19. 是否可以在qmake .pro文件中設置visual studio項目屬性?
- 20. Visual Studio未能創建C++控制檯項目
- 21. Visual Studio 2017 C++ win32控制檯項目模板
- 22. 在Visual Studio 2012解決方案中混合使用Visual Studio 2010和2012項目
- 23. 添加混合按鈕,Visual Studio項目
- 24. C#控制檯和Windows應用程序
- 25. 控制檯命令在Visual Studio中構建項目
- 26. Visual Studio 2005中的空項目和win32控制檯項目之間的差異
- 27. 你可以在單個項目中混合使用.net語言嗎?
- 28. 通過代碼排除項目中的.cs文件? (Visual Studio)
- 29. Windows窗體:是否可以在運行時插入.cs文件?
- 30. 是否可以在Windows Azure中查看項目文件?
F#的靜態鏈接切換器與ilmerge相同。 – Robert 2009-01-22 08:55:14