Xamarin.ios 缺少Windows。在Mac上使用XS的N=5 MvvmCross示例中出现系统错误
我试图在Mac上使用XS(Stable)`从MvvmCross系列()的N+1天编译Xamarin.ios 缺少Windows。在Mac上使用XS的N=5 MvvmCross示例中出现系统错误,xamarin.ios,xamarin.android,xamarin,mvvmcross,Xamarin.ios,Xamarin.android,Xamarin,Mvvmcross,我试图在Mac上使用XS(Stable)`从MvvmCross系列()的N+1天编译N=5解决方案。我得到以下错误: 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.IComman
N=5
解决方案。我得到以下错误:
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天系列中的所有前面的示例都可以在不必更改部件的情况下工作。我最初在这个解决方案上遇到了一个额外的错误(缺少MvxCommand
),当我将References
中的程序集替换为具有相同名称但来自MvvmCross Binaries
(来自XS iOS Mac文件夹)的程序集时,这个错误就消失了。我还尝试了遵循N=22示例(基于Mac)并将其应用于N=5,但没有效果
似乎任何需要ICommand的东西对我来说都是坏的
你知道如何在Mac上编译吗?谢谢。Xamarin将随时为PCLs提供官方支持 在此之前,Mac上的支持需要进行一些.csproj编辑,以便构建PC nuget解决方案 构建这些项目的最简单方法是:
- 将程序集提示路径从便携式win+net45+MonoAndroid16+MonoTouch40+sl40+wp71路径切换到
路径MonoTouch40
- 并将System.Windows垫片程序集添加到列表中(如果核心项目使用这些区域,则可能还需要.Net和.Xml.Serialization垫片)
<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>
..\packages\MvvmCross.PortableSupport.3.0.6\lib\monotuch40\System.Windows.dll
..\packages\MvvmCross.HotTuna.CrossCore.3.0.6\lib\monotuch40\cirries.CrossCore.dll
..\packages\MvvmCross.HotTuna.StarterPack.3.0.6\lib\monotuch40\cirries.MvvmCross.dll
..\packages\MvvmCross.HotTuna.CrossCore.3.0.6\lib\monotuch40\cirries.MvvmCross.Localization.dll
..\packages\MvvmCross.HotTuna.Plugin.Json.3.0.6\lib\monotuch40\cirries.MvvmCross.Plugins.Json.dll
..\packages\MvvmCross.HotTuna.Plugin.jsonLocalization.3.0.6\lib\monotuch40\cirries.MvvmCross.Plugins.jsonLocalization.dll
..\packages\MvvmCross.HotTuna.Plugin.ResourceLoader.3.0.6\lib\monotuch40\cirries.MvvmCross.Plugins.ResourceLoader.dll
..\packages\MvvmCross.HotTuna.Plugin.Json.3.0.6\lib\monotuch40\Newtonsoft.Json.dll
将其与原始版本进行比较
如果这感觉太“黑”,那么目前的替代方法是不使用nuget,而是使用binaries文件夹-在N=22中有一个关于这方面的演练-
希望在我写完这篇文章的时候,Xamarin已经提供了他们的PCL支持,所以这将过时…成功了!谢谢你,斯图尔特!关于Xamarin的PCL支持,据我所知还有4周的时间,基于此,我们非常感谢您提供此解决方案。