2013-08-12 30 views
6

Tại sao tôi không thể tạo Nhà cung cấp loại dưới dạng tệp * .exe với [<TypeProviderAssembly()>][<EntryPoint>] bên trong?Nhà cung cấp loại F # được biên soạn dưới dạng tệp * .exe

Khi tôi cố gắng tham khảo ví dụ TP sử dụng #r @"d:\TP\bin\Debug\MyTypeProvider.exe", tôi thấy như sau:

test.fsx(3,1): error FS3031: The type provider 'd:\TP\bin\Debug\MyTypeProvider.exe' reported an error: Assembly attribute 'TypeProviderAssemblyAttribute' refers to a designer assembly 'MyTypeProvider' which cannot be loaded or doesn't exist. Could not load file or assembly 'file:///d:\TP\bin\Debug\MyTypeProvider.dll' or one of its dependencies. The system cannot find the file specified.

tôi cần phải có một thời gian chạy kiểu suy luận trong quá trình riêng biệt, bởi vì nó phải được 64bit (không giống như 32bit quá trình VS). Nhưng tôi muốn đóng gói tất cả mọi thứ vào một tập tin, tham khảo nó từ VS và bắt đầu như quá trình bên ngoài.

Trả lời

2

Có lẽ có một số lý do cơ bản tốt để luôn tìm kiếm các tệp DLL thay vì EXE, nhưng tôi cho rằng đây có thể là giới hạn tùy ý.

Tôi có thể làm mọi thứ trong FSI nếu tôi cung cấp tên đầy đủ của assembly cho nhà xây dựng TypeProviderAssemblyAttribute (ví dụ: [<TypeProviderAssembly("MyExe, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]), nhưng IntelliSense không hoạt động và tôi không thể sử dụng TP từ các dự án khác. Xem xét việc nộp một lỗi với nhóm - nhưng nó có lẽ sẽ giúp nếu bạn có thể biện minh lý do tại sao bạn cần một EXE thay vì một DLL cho kịch bản của bạn.

+0

TP sẽ có thể kết nối với SharePoint. Nó chỉ có thể từ quá trình '64bit'. VS là ứng dụng '32bit' có nghĩa là IntelliSense cũng vậy. Tôi không thể làm điều đó trực tiếp từ nhà cung cấp loại. Giải pháp duy nhất mà tôi thấy là bắt đầu quá trình '64bit' riêng biệt và liên lạc giữa chúng bằng cách sử dụng các đường ống có tên WCF. Nó sẽ được tốt đẹp để đóng gói dịch vụ và khách hàng vào một exe. –

+0

Bạn có thể xem [triển khai hiện tại] (https://github.com/sergey-tihon/PowerShellTypeProvider). Nhưng tôi muốn hợp nhất các dự án này thành một dự án. Tôi nghĩ rằng trong trường hợp này nó sẽ dễ sử dụng hơn. –

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