LoginSignup
2
2

More than 5 years have passed since last update.

Xamarin.Mac + F#のソリューションがビルドできないときは

Posted at

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という変数の中身が存在しないパスになってしまうので、存在するパスに書き換えます。

書き換え前)
xml
<Import Project="$(FSharpTargets)" />

書き換え後)
xml
<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アプリは、茨の道のようです・・・^^;

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2