Xamarin ...迁移到.NET Standard 2.0失败

时间:2018-12-02 18:42:24

标签: xamarin xamarin.forms .net-standard-2.0

我正在尝试将PCL项目迁移到新的“网络标准”,但现在失败了。

当前我遇到以下异常:

System.MissingMethodException: 'Method not found: 'Void Xamarin.Forms.Xaml.Internals.SimpleValueTargetProvider..ctor(System.Object[], System.Object, Xamarin.Forms.Internals.INameScope)'.'

它直接发生在我具有以下xaml标签的页面的“ InitializeComponent”中:

<Image Source="{ns_uc:ImageResource i_home_on.png}"/>

其中“ ImageResource”是扩展标记,此标记在我的PCL项目中就像一个吊饰。这是定义的一部分:

public class ImageResourceExtension : IMarkupExtension

但是我的新.NET Standard项目未调用此类!

在.csproj中,我有以下参考文献,应该足够了吗?

<PackageReference Include="System.ComponentModel" Version="4.3.0" />
<PackageReference Include="Xamarin.Forms" Version="3.4.0.1008975" />

因此,如果有人因为我已经在迁移中花了2天而没有成功的想法:-(

顺便说一句,看来我并不孤单:https://forums.xamarin.com/discussion/101999/cant-use-imarkupextension-in-a-net-standard-library

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

1.System.ComponentModel在某些NetStandard版本中是NuGet软件包。如果不存在,请尝试安装它。

2。您可以直接使用select b.hotel_name hotel_name, a.room , b.total_room from (SELECT htl_branch_info_lang.hotel_name, count(htl_room_information.id_hotel) as room FROM htl_booking_detail, htl_branch_info_lang, htl_room_information WHERE htl_branch_info_lang.id=htl_booking_detail.id_hotel and htl_booking_detail.id_room=htl_room_information.id group by htl_branch_info_lang.hotel_name ) a RIGHT join (SELECT (htl_branch_info_lang.hotel_name) as hotel_name,count(htl_room_information.id_hotel) as total_room FROM htl_room_information ,htl_branch_info_lang where htl_room_information.id_hotel=htl_branch_info_lang.id group by htl_branch_info_lang.hotel_name) b on a.hotel_name = b.hotel_name ; 来代替.net标准项目中的<Image Source="myImage.png"/>

3。IMarkupExtension的实现在PCL项目和.net标准2.0项目中可能有所不同。这是您可以参考的官方演示工具:

ImageResourceExtension

您可以参考下面的演示来修复您的项目。

引用:Demo of ImageResourceExtension

Documents of Markup Extensions

答案 1 :(得分:0)

我将遵循詹姆斯·蒙特马格诺的步骤:

https://montemagno.com/how-to-convert-a-pcl-library-to-net-standard-and-keep-git-history/

我关注了Xamarin节目中的这段视频: https://channel9.msdn.com/Shows/XamarinShow/Snack-Pack-15-Upgrading-to-XamarinForms-to-NET-Standard

我第一次尝试就自己尝试了一次,但失败了。第二遍,我完全按照视频中的说明操作,一切正常。