使用iPhone

时间:2017-01-30 08:56:11

标签: xamarin xamarin.forms

我的解决方案包括3个项目:

  1. 我的后端项目包含程序集My_Test_App(可移植)

  2. My_Test_App.Android

  3. My_Test_App.iOS

  4. 在后端项目中,我有这个XAML页面代码(请原谅名称)

    <ContentPage
        x:Class="My_Test_App.Pages.LoginPage"
        xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:converters="clr-namespace:My_Test_App.Converters;assembly=My_Test_App"
        xmlns:effects="clr-namespace:My_Test_App.Effects;assembly=My_Test_App"
        xmlns:viewModels="clr-namespace:My_Test_App.ViewModels;assembly=My_Test_App"
        xmlns:views="clr-namespace:My_Test_App.Views;assembly=My_Test_App">
        <ContentPage.Resources>
            <ResourceDictionary>
                <converters:Converter1 x:Key="conv1" />
                <converters:Converter2 x:Key="conv2" />
                <converters:Converter3 x:Key="conv3" />
            </ResourceDictionary>
        </ContentPage.Resources>
    </ContentPage>
    

    它适用于Android和iPhone模拟器,但当我在真正的iPhone上测试它时,我收到此错误: Xamarin.Forms.Xaml.XamlParseException: Position 13:14. Type converters:Converter1 not found in xmlns clr-namespace:My_Test_App.Converters;assembly=My_Test_App

    我在后端项目中的Converter1代码:

    namespace My_Test_App.Converters
    {
        public class Converter1: IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                bool original = (bool)value;
                return !original;
            }       
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
            public My_Test_App()
            {
            }
        }
    }
    
    你能帮忙吗?我在这里有一些怀疑:

    1. 对程序集名称进行下划线,但我需要保留当前的程序集名称..

    2. 在IOS项目属性中,我更改了iOS构建部分中的链接器选项&#34;仅限链接SDK&#34; to&#34;链接所有程序集&#34;。但是,如果我不改变它,我会收到错误&#34;无法进行组装.......&#34;

    3. 当前xamarin版本中可能出现的错误(我的是4.2.2.11)

    4. 感谢您帮助我!

1 个答案:

答案 0 :(得分:2)

  

类型转换器:找不到Converter1

Xamarin链接器使用静态分析来确定可以从程序集中删除哪些IL代码以减小大小以及Xamarin.Form IValueConverter基于PreserveAttribute的类的反射调用似乎没有被使用。

在您的Xamarin.Forms(PCL)项目中,添加public sealed class PreserveAttribute : System.Attribute { public bool AllMembers; public bool Conditional; } 类:

IValueConverter

现在将[Preserve] w / AllMembers属性添加到[Preserve(AllMembers = true)] public class Converter1: IValueConverter { ~~~ } 类,以通知链接器跳过此类:

import xml.etree.ElementTree as ET

tree = ET.parse("Parsed.xml")
doc = tree.getroot()

for elem in doc.findall('.//medicationsInfo/entryInfo/productCode/code'):
    print (elem.text);

for elem in doc.findall('.//medicationsInfo/entryInfo/productCode/codeSystem'):
    print (elem.text);  

回复:https://developer.xamarin.com/guides/ios/advanced_topics/linker/