これは非常に奇妙なことであり、誰かがこれを理解するための洞察を持ってくれることを願っています。
F#2.0(Visual Studio 2010、.Net 4.0を対象)ソリューションがあり、最初に作成した場所で正常に機能しますが、新しいフォルダーにコピーしようとすると(ソース管理にチェックインするため)、 )、ビルド時に非常に奇妙なエラーが発生します。それらは次の線に沿っている傾向があります:
error FS0803: Invalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'. Overloads are: None() : unit.
また
error FS0001: This expression was expected to have type obj option but here has type Some<'a>
これらのエラーは、オプションタイプの使用でのみ発生します。そのような使用法の簡単な例は、次のとおりです。
let asOption e =
match e with
| null -> None
| _ -> Some(e)
さて、これは元の場所で問題なくコンパイルされるソリューションであることを忘れないでください。Clean / Rebuild、objおよびbinディレクトリの削除、Visual Studionの再起動など、明らかなことを試しましたが、それでも同じです。
参照DLLはどちらの場合もすべて同じであり、GACされたDLLはGACから参照され、非GACされたdllはコピーされ、同じ相対パスから参照されます。楽しみのために、各ソリューションのコンパイルに使用されるFsc.exeの呼び出しの出力ウィンドウのテキストを比較して、どちらの場合もコンパイラーが同じ引数で呼び出されていることを確認しました。当然、そうです。
誰もがこれを引き起こしている可能性があるものについて何か考えがありますか?どういうわけか、GACからFSharp.Core.dllの奇妙なリンボバージョンを取得していますか?私は不運なスティフの中で最も不運なのですか?