0

Mac で XS (Stable)` を使用してN=5、N+1 日分の MvvmCross シリーズ ( https://github.com/slodge/NPlus1DaysOfMvvmCross/tree/master/N-05-MultiPage ) からソリューションをコンパイルしようとしています。次のエラーが表示されます。

Error CS0234: The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference? (CS0234) (MultiPage.Core)

これは、 への参照によってトリガーされSystem.Windows.Input.ICommandます。

N+1 日シリーズの前の例はすべて、アセンブリを変更しなくても機能します。最初は、このソリューションで追加のエラー (missing ) が発生していましたが、 (XS-iOS-Mac フォルダーから)のアセンブリを同じ名前MvxCommandのアセンブリに置き換えたときに消えました。また、N=22 の例 (Mac ベース) に従って、それを N=5 に適用しようとしましたが、役に立ちませんでした。ReferencesMvvmCross-Binaries

必要なものは何でもICommand壊れてしまうようです。

これを修正して Mac でコンパイルする方法について何か考えはありますか? ありがとう。

4

1 に答える 1

0

PCL の公式サポートは、いつでも Xamarin から提供される予定です。

これが実現するまで、Mac でのサポートには、PC-nuget ソリューションを構築するために .csproj を少し編集する必要があります。

これらのプロジェクトをビルドする最も簡単な方法は次のとおりです。

  • portable-win+net45+MonoAndroid16+MonoTouch40+sl40+wp71アセンブリ ヒント パスをパスからパスに切り替えMonoTouch40ます。
  • System.Windows shim アセンブリをリストに追加します (コア プロジェクトでこれらの領域を使用する場合は、.Net および .Xml.Serialization shim も必要になる場合があります)。

これを N=21 で実行すると、Core csproj ファイルの参照部分は次のようになります。

 <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Windows">
      <HintPath>..\packages\MvvmCross.PortableSupport.3.0.6\lib\MonoTouch40\System.Windows.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.CrossCore">
      <HintPath>..\packages\MvvmCross.HotTuna.CrossCore.3.0.6\lib\MonoTouch40\Cirrious.CrossCore.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.MvvmCross">
      <HintPath>..\packages\MvvmCross.HotTuna.StarterPack.3.0.6\lib\MonoTouch40\Cirrious.MvvmCross.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.MvvmCross.Localization">
      <HintPath>..\packages\MvvmCross.HotTuna.CrossCore.3.0.6\lib\MonoTouch40\Cirrious.MvvmCross.Localization.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.MvvmCross.Plugins.Json">
      <HintPath>..\packages\MvvmCross.HotTuna.Plugin.Json.3.0.6\lib\MonoTouch40\Cirrious.MvvmCross.Plugins.Json.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.MvvmCross.Plugins.JsonLocalisation">
      <HintPath>..\packages\MvvmCross.HotTuna.Plugin.JsonLocalisation.3.0.6\lib\MonoTouch40\Cirrious.MvvmCross.Plugins.JsonLocalisation.dll</HintPath>
    </Reference>
    <Reference Include="Cirrious.MvvmCross.Plugins.ResourceLoader">
      <HintPath>..\packages\MvvmCross.HotTuna.Plugin.ResourceLoader.3.0.6\lib\MonoTouch40\Cirrious.MvvmCross.Plugins.ResourceLoader.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json">
      <HintPath>..\packages\MvvmCross.HotTuna.Plugin.Json.3.0.6\lib\MonoTouch40\Newtonsoft.Json.dll</HintPath>
    </Reference>
  </ItemGroup>

これをhttps://github.com/slodge/NPlus1DaysOfMvvmCross/blob/master/N-21-Babel/Babel.Core/Babel.Core.csprojのオリジナルと比較してください


これがあまりにも「ハック」であると感じた場合、現在の代替手段は nuget を使用せず、代わりにバイナリ フォルダーを使用することです。 n22-from-basics-on-mac-n1-days-of.html


うまくいけば、私がこれを書き終えるまでに、Xamarin はすでに PCL サポートを出荷しているので、これは時代遅れになるでしょう...

于 2013-06-18T06:37:40.883 に答える