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

Enr*_*ico 7 custom-controls xamarin.forms

在我的Xamarin解决方案中,我在Controls解决方案文件夹中添加了一个新的库项目.从我XAMLViews我打电话给我的分量和一切工作正常.

我不知道在更新之后今天是否有什么变化iOS 10,Visual Studio for Mac但是如果我尝试编译我的解决方案,我不会收到错误

System.Reflection.TargetInvocationException:调用目标抛出了异常.---> Xamarin.Forms.Xaml.XamlParseException:位置43:38.在xmlns clr-namespace中找不到类型Donut:Mobile.Controls.Wheel; assembly = Mobile.Controls.Wheel
at Xamarin.Forms.Xaml.Internals.XamlTypeResolver.Xamarin.Forms.Xaml.IXamlTypeResolver.Resolve(System.String qualifiedTypeName,System .IServiceProvider serviceProvider)

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>
Run Code Online (Sandbox Code Playgroud)

Doughnut是衍生自类ContentViewMobile.Controls.Wheel.

Din*_*ash 2

我之前在 iOS 上也遇到过同样的问题,

\n\n
\n

在 PCL 中添加空类并使用空静态init()方法并在iOS\xe2\x80\x99s AppDelegate方法上调用它可以解决此问题,当 \xe2\x80\x9cDont\xe2\x80\x99t\n Link\xe2\ x80\x9d 或 \xe2\x80\x9c 仅链接 SDK 程序集 \xe2\x80\x9d 在 iOS 构建选项的 \xe2\x80\x9cLinker Options\xe2\x80\x9d 中选择。

\n
\n\n

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

\n\n
\n

在 Doughnut.cs 中添加以下方法

\n
\n\n
//Do Nothing Init Method:\npublic static void Init(){\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

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

\n
\n\n
Mobile.Controls.Wheel.Doughnut.Init();\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n