2015-03-27 19 views
5

Tôi có chương trình F # mà tôi đã tạo trong VS2013. Tôi dự định triển khai trên máy chủ Windows 2008 R2 với .NET framework 4.5 được cài đặt. Bây giờ, khi tôi xây dựng chương trình trong studio trực quan, nó tạo ra một exe trong thư mục debug/bin (MyProgram.exe). Tôi có cần phải bao gồm một bản sao của fharp.core.dll với exe không? Hoặc, quá trình xây dựng sẽ tự động biên dịch các DLL phụ thuộc cần thiết (fsharp.core, fsharp.data, fsharp.data.TypeProviders)? Hầu hết các nghiên cứu tôi có thể tìm kiếm trực tuyến cho dường như nhìn vào VS2010 và tôi không sử dụng fsc, exe hiện tại.Triển khai F # exe

Cảm ơn bạn đã cung cấp thông tin chi tiết.

+1

Bạn sẽ cần phải coy tất cả các tệp trong thư mục bin/debug đến vị trí triển khai. Ghi chú bên F # biên dịch xuống MSIL, không có sự khác biệt trong việc triển khai một ứng dụng .Net được viết bằng F # và một được viết bằng C# – theDarse

+1

@theDarse Điều đó không hoàn toàn chính xác. F # code sử dụng các kiểu và hàm được định nghĩa trong FSharp.Core (danh sách, tùy chọn, vv), và vì FSharp.Core không phải là một phần của BCL, bạn phải đảm bảo rằng assembly này là * bằng cách nào đó * có sẵn cho chương trình phụ thuộc vào các loại này. –

Trả lời

5

Bạn có thể hoặc không cần sao chép FSharp.Core.dll cùng với .exe.

Nếu F # đã được cài đặt trên máy chủ, bạn có thể không cần, nhưng nó phải là phiên bản chính xác của F #.

Nếu không, giấy phép F # cho phép bạn triển khai FSharp.Core.dll cùng với tệp nhị phân của riêng bạn.

Ngoài ra còn có 'chính thức' FSharp.Core NuGet package, nếu đó là ý thích của bạn nhiều hơn.

+0

Tôi đã sao chép fsharp.core.dll vào cùng thư mục chứa MyProgram.exe. Khi nó khởi động, tôi nhận được một lỗi ngoại lệ unhandled "Thiếu phương pháp Eception: Microsoft.Fsharp.Control.FsharpAsync'1 FSharp.Data.Runtime.IO.asyncReadTextAtRuntime ..." Nó chạy hoàn toàn tốt trong VS2013 . Tôi không hiểu tại sao điều này không hiệu quả. Cảm ơn bạn đã giúp đỡ – RT1138

+1

Tôi không thể nói cụ thể vấn đề là gì, nhưng những người * MissingMethodExceptions * luôn luôn (IME) vì phiên bản lắp ráp không phù hợp. Bạn phải đảm bảo rằng phiên bản của FSharp.Core.dll trong đường dẫn thăm dò của chương trình giống như phiên bản mà nó được biên dịch. –

+0

Bạn có thể sử dụng [Fuslogvw] (https://msdn.microsoft.com/en-us/library/e74a18c4.aspx) để khắc phục sự cố ... –

7

Bạn có thể sử dụng tùy chọn trình biên dịch --standalone để liên kết tĩnh FSharp.Core.dll (F # runtime) và bất kỳ bộ tham chiếu nào phụ thuộc vào nó (tức là bất kỳ F # assembly nào khác).

+0

Tôi có thể thêm tùy chọn này vào dự án VS F # ở đâu? Dường như không có gì liên quan trong dự án -> tùy chọn -> xây dựng – dudeNumber4

+0

Trong trường thử nghiệm "các cờ khác" trong dự án -> thuộc tính -> xây dựng – rasmusm

Các vấn đề liên quan