2

F# で利用したい次の C# クラスがあります。

using System;
using System.Collections.Generic;
using System.Text;

namespace DataWrangler.Structures
{
    public enum Type { Trade = 0, Ask = 1, Bid = 2 }

    public class TickData
    {
        public string Security = String.Empty;
        public uint SecurityID = 0;
        public object SecurityObj = null;
        public DateTime TimeStamp = DateTime.MinValue;
        public Type Type;
        public double Price = 0;
        public uint Size = 0;
        public Dictionary<string, string> Codes;
    }
}

F# でインスタンスを作成したいと思います。これを行うために使用しているコードは、f# スクリプト ファイルにあります。

#r @"C:\Users\Chris\Documents\Visual Studio 2012\Projects\WranglerDataStructures\bin\Debug\WranglerDataStructures.dll"

open System
open System.Collections.Generic;
open System.Text;
open DataWrangler.Structures

type tick = TickData // <- mouse over the "tick" gives me a tooltip with the class structure

// it bombs out on this line 
let tickDataTest = tick(Security = "test", TimeStamp = DateTime(2013,7,1,0,0,0), Type = Type.Trade, Price = float 123, Size = uint32 10 )

私が得るエラーは次のとおりです。

error FS0193: internal error: Could not load file or assembly 'file:///C:\Users\Chris\Documents\Visual Studio 2012\Projects\WranglerDataStructures\bin\Debug\WranglerDataStructures.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.

ファイルパスを確認しましたが、正しいようです。「type tick」にマウスを合わせると、C# オブジェクトの構造が表示されます。そのため、C#コードを見つけているようです。ここで私が間違っていることを誰かに教えてもらえますか? 構文?C# はまだ非常に新しい -> F# introp

4

1 に答える 1

7

ここで確認すべき点がいくつかあります。

  1. WranglerDataStructures.dll と互換性のあるビット モードで fsi.exe が実行されていることを確認します。[F# ツール] -> [F# インタラクティブ] -> [64 ビット F# インタラクティブ] の下の [Visual Studio オプション] でフラグを設定することにより、fsi.exe を 64 ビットまたは 32 ビット プロセスとして実行します。通常、C# アセンブリを任意の CPU としてコンパイルするように設定することで、この種の問題を回避できます。

  2. WranglerDataStructures.dll が、F# から参照していない他のライブラリに依存していないことを確認してください。F# に参照を追加するか、WranglerDataStructures.dll から参照を削除します。

これらの手順が成功しない場合は、fuslogview.exe ツールhttp://msdn.microsoft.com/en-us/library/e74a18c4.aspxを使用して、読み込まれていない参照を正確に確認してください。

于 2013-07-29T17:15:25.303 に答える