2

FSharp.Compiler.CodeDom(PowerPackからを使用して、F#クラスを動的に作成しています。問題は、コンピューターにVS2008とVS2010の両方が並んでいて(正常に動作する)、この構成でF#を使用するのはせいぜいバグがあることです。

  • InstallFSharp.msiをインストールしない場合、VS2008では、ビルドされたクラスがFSharp.Coreが見つからないことについて文句を言います(参照されている場合でも)
  • InstallFSharp.msiをインストールすると、VS2008では、ビルドされたクラスはVS2010用にビルドされたF#を使用し、.net4バリアントをロードするため、バイナリ非互換性例外をスローします。

    FSC:エラーFS0219:参照またはデフォルトのベースCLIライブラリ'mscorlib'は、参照されているF#コアライブラリ' C:\ Program Files(x86)\ Microsoft F#\ v4.0\FSharp.Core.dll'とバイナリ互換性がありません。ライブラリを再コンパイルするか、使用しているCLIバージョンと一致するこのライブラリのバージョンへの明示的な参照を作成することを検討してください。

  • 以前の場所で見つかったF#を個別にインストールされたdll-sに置き換えると、もちろんVS2010はバイナリの非互換性について文句を言います

私は何かを見落としているのでしょうか、それともこのような共有環境では機能しないのでしょうか。これは、アプリケーションをデプロイするときに実際の問題を意味する場合があります。

ありがとう

4

3 に答える 3

2

私自身も同様の問題を抱えています。ソースツリーのトランクはVS2008でビルドするように設定されていますが、最新のブランチはVS 2010にアップグレードされています。控えめに言っても、F#の状況は厄介です。

私たちが見つけた答えは、-noframeworkコンパイラフラグを使用することです。このオプションを設定すると、使用するmscorlib.dllとSystem.dllを指定できるため、サポートされている.NETFrameworkに対してビルドできます。

于 2010-10-06T20:07:49.693 に答える
1

少し前に最初に質問したことを考えると、最新のPowerPackをお持ちですか?特に、5月27日に質問がありますが、ダウンロードページで最後に更新されたのは5月30日であることがわかります。それが何かに影響するかどうかはわかりませんが、指摘するだけです。

また、質問を少し編集しました。これにより、質問が一番上に移動し、Tomasに表示されて返信される場合に備えて、:)

于 2010-10-11T11:46:20.790 に答える
1

reghack(Windows 7)と同じである場合とそうでない場合がある問題を修正しました:Windowsレジストリエディターバージョン5.00

[-HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ FSharp \ 2.0 \ Runtime]

ファイル/コンパイラを見つけるための解決パスは、このハックによって両方が並行して機能することを意味すると思いますが、2.0の場合のみをテストしました。他のregハックと同様に、最初にそのregキーをバックアップする必要があります。

于 2012-02-08T12:33:44.203 に答える