2017年4月頭のアップデート(内容と日付の正確なところが分かりません。ごめんなさい)で、Xamarin.Macを使ったCocoa App + F#のソリューションがビルド出来なくなり、悪戦苦闘した内容をメモしておきます。
極めて期間限定の価値しか提供できないとは思いますが、せっかくなので公開しておきます。
現象
Cocoa App+F#のソリューションをビルドするとエラーが起きビルドに失敗する
エラー内容
Error: <solution_path>/FSharpSample/FSharpSample.fsproj
: /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/Xamarin.Mac.FSharp.targets
: Project file could not be imported, it was being imported by
<solution_path>/FSharpSample/FSharpSample/FSharpSample.fsproj
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/Xamarin.Mac.FSharp.targets
could not import "$(FSharpTargets)"
(適度に改行を入れています)
原因の推測
正確な日付と対象ライブラリは覚えていないのですが、4月頭のアップデートでビルドプロセスの雛形となるtargetファイルのパスが変わったようで、Cocoa App+F#のプロジェクトがビルドできなくなったようです。
対処内容
下記ファイルの一部を書き換えます。
/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/msbuild/Xamarin.Mac.FSharp.targets
FSharpTargetsという変数の中身が存在しないパスになってしまうので、存在するパスに書き換えます。
書き換え前)
<Import Project="$(FSharpTargets)" />
書き換え後)
<Import Project="/Library/Frameworks/Mono.framework/Versions/4.8.1/lib/mono/fsharp/Microsoft.FSharp.Targets" />
FSharpTragets変数を参照せずに直接targetsファイルを見に行っています。汎用性はない解決方法ですが、当面を乗り切れます。
雑感
Cocoa App+F#はViewControllerが自動で作られないなど、C#に比べてケアが行き届いていません。F#でMacアプリは、茨の道のようです・・・^^;