为什么我无法将Type Provider创建为内置[<TypeProviderAssembly()>]
和[<EntryPoint>]
的* .exe文件?
当我尝试使用#r @"d:\TP\bin\Debug\MyTypeProvider.exe"
引用此类TP时,我会看到以下内容:
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.
我需要在单独的进程中有一个类型推断运行时,因为它应该是64bit
(与32bit
VS进程不同)。但我希望将所有内容打包到一个文件中,从VS引用它并从外部进程开始。
答案 0 :(得分:2)
也许有一些很好的潜在原因总是寻找DLL而不是EXE,但我怀疑这可能是一个任意限制。
如果我将程序集的全名提供给TypeProviderAssemblyAttribute
构造函数(例如[<TypeProviderAssembly("MyExe, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
),我可以在FSI中工作,但IntelliSense不起作用,我不能使用TP其他的项目。考虑向团队提交一个错误 - 但如果你能证明为什么你需要一个EXE而不是你的场景的DLL那么它可能会有所帮助。