Xamarin解决方案:当我尝试在同一个项目中使用某个组件时出现异常(不同的命名空间)

时间:2017-09-20 16:58:43

标签: xamarin.forms custom-controls

在我的Xamarin解决方案中,我在Controls解决方案文件夹中添加了一个新的库项目。在我XAML的{​​{1}}中,我调用了我的组件,一切正常。

我不知道在更新ViewsiOS 10之后今天是否有任何变化,但如果我尝试编译我的解决方案,则不会发生错误

  

System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 --->   Xamarin.Forms.Xaml.XamlParseException:位置43:38。输入甜甜圈   在xmlns中找不到   CLR-名称空间:Mobile.Controls.Wheel;装配= Mobile.Controls.Wheel
  在   Xamarin.Forms.Xaml.Internals.XamlTypeResolver.Xamarin.Forms.Xaml.IXamlTypeResolver.Resolve   (System.String qualifiedTypeName,System.IServiceProvider   的ServiceProvider)

Visual Studio for Mac页面定义如下:

XAML

<ContentPage [...] xmlns:ctl="clr-namespace:Mobile.Controls.Wheel;assembly=Mobile.Controls.Wheel" x:Class="Views.DashboardPage"> <StackLayout> <ctl:Doughnut HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" /> </StackLayout> </ContentPage> 是源自DoughnutContentView的类。

1 个答案:

答案 0 :(得分:2)

我之前遇到过与iOS相同的问题,

  

在PCL中添加空类,使用静态 init()方法并调用   它在 iOS的AppDelegate 方法解决了这个问题,或者“不要   在iOS构建选项的“链接器选项”中选择了“或仅链接SDK程序集”链接。

Donut 类中,添加一个空的 Do-Nothing static Init 方法,并从iOS的AppDelegate中调用此方法:

  

在Doughnut.cs中添加以下方法

//Do Nothing Init Method:
public static void Init(){

}
  

在AppDelegate.cs中,在调用 LoadApplication 方法之前添加以下行

Mobile.Controls.Wheel.Doughnut.Init();

希望这可以解决您的问题,如果需要任何信息,请告诉我。