我正在尝试将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
感谢您的帮助
答案 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
您可以参考下面的演示来修复您的项目。
答案 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
我第一次尝试就自己尝试了一次,但失败了。第二遍,我完全按照视频中的说明操作,一切正常。