2016-03-30 12 views
3

JShoneで動作するいくつかの異なるプロジェクトでFSharp.Data TypeProviderを使用した後、私はWSDLベースのサービスを消費する同様のアプローチを検討しました。たとえば、thisの例を見ると、私は希望があった。残念ながら、Macではモノを使用しても動作しません。WSDLとF#TypeProviders in mono

が任意の選択肢やソリューションモノの非常に少ない知識で書かれている次のエラー

"The type provider 
'FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: 
The .NET SDK 4.0 or 4.5 tools could not be found (FS3033)" 

答えて

2

に、このWSDLのタイププロバイダのいくつかの知識です。私はそれをたくさん使って、いつどこで何が起こったのかを理解しようとするソースを読むことを含め、すべての癖にいくつかの経験を持っています。 svcutil-toolの一般的な知識とバグ、そしてこのsub-parツールの知識も加えてください。

ここでの主な問題は、モノ上のsvcutilへの「パス」が間違っているか、svcutilが完全に欠けていることです。または、svcutilパスを指すためのいくつかのレジストリキーがないような問題の置換。

一方、私はsvcutilもモノで利用できるはずだと思います。

WSDLプロバイダは非消去型プロバイダで、コードを生成してコンパイルするためにsvcutilを使用してプロキシを生成します。利用可能なsvcutilを持っていることを確認してから、パス/レジストリ/何でも確認してください。それ以外の場合は、Im 99%確かに、このタイププロバイダをモノラルで使用することはできません。ここで不確かな部分は、Windows環境でライブラリを生成してから、このDLLをmono内で再利用すると効果的です。

githubののソースを見てみると:https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/Util.fs#L106(ライン106 ++) と https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/TypeProviders.fs(SvcUtilが使用されている部分) あなたはSvcUtilを確認するために、どのように、どのようなではない、どこにとして手掛かりを得る可能性があります。 exeは正しいパスで利用できます。

https://github.com/fsprojects/FSharp.Data.TypeProviders/blob/master/src/FSharp.Data.TypeProviders/Util.fs#L82は、いくつかのレジストリキーを参照し、ハードコードされたいくつかのパスも追加します。

あなたが実際に「正しい」パスでsvcutilを持っていることを確認することによってあなたのためにそれを修正するかもしれないうまくいけば...

私は(それがあまりにもgrrrが私をビットた)svcutilにこの依存関係を好きではありません、または他の外部ツールを使用しています。しばらくして、何らかの魂がこれを書き直す任務に着手することを願っています。