gpt4 book ai didi

c# - Xamarin XAML : Type is not found from external assembly

转载 作者:行者123 更新时间:2023-11-30 16:45:46 27 4
gpt4 key购买 nike

我有一个 Visual Studio解决方案,它有 2 个 C# 项目:

  1. C# 可移植 BasicLib ;

  2. C# 可移植 XAML project .

我定义了资源文件和公共(public) LocalizedStrings BasicLib 中的类.它的命名空间是“PL.Common.BasicLib”,程序集名称是“PL.Common.BasicLib.dll”。

LocalizedStrings.cs

namespace PL.Common.BasicLib
{
/// <summary>
/// Provides access to string resources.
/// </summary>
public class LocalizedStrings
{
private static AppResources _localizedResources = new AppResources();

public AppResources LocalizedResources { get { return _localizedResources; } }
}
}

然后我将 XAML 项目的引用添加到此 PL.Common.BasicLib .到目前为止,一切都很好。我双击 XAML 项目的“References”节点中的程序集名称,我可以在 Visual Studio 的“LocalizedStrings”中的“PL.Common.BasicLib”下看到类型“Object Browser”。

现在,我想把这个资源放入App.xaml以这种方式作为应用程序资源:

App.xaml:

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:basiclib="clr-namespace:PL.Common.BasicLib;assembly=PL.Common.BasicLib"
x:Class="PL.Common.Xaml.App">

<Application.Resources>
<basiclib:LocalizedStrings x:Key="LocalizedStrings"/>
</Application.Resources>
</Application>

构建解决方案,没问题。运行时会报错:

Xamarin.Forms.Xaml.XamlParseException: Position 8:6. 
Type basiclib:LocalizedStrings not found in xmlns clr-namespace:PL.Common.BasicLib;assembly=PL.Common.BasicLib

谁能帮忙看看哪里有bug?

谢谢!

最佳答案

这可能与一个已知的链接问题有关 - Xamarin 编译器最终链接出仅在 XAML 中具有引用的类(来自外部程序集)。

有几个链接讨论了这个:

  1. Extending Control plugins > 开始
  2. Force assembly linking

有很多选项可以解决这个问题:

  1. 按照“入门”部分所述,在每个类中添加一个静态 Init 方法 here

    // this ensures the class does not get 
    // linked out in the application we add this assembly to.
    public static void Init() { }
  2. 或者,使用 Android 上的保留属性保留代码, 和 iOS

    public class Example
    {
    [Android.Runtime.Preserve]
    public Example ()
    {
    }
    }
  3. 或者,使用 Custom linking .

  4. 或者,将项目配置更新为不链接。 Android , 和 iOS .虽然不是推荐的选项。

关于c# - Xamarin XAML : Type is not found from external assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com