我已经创建了两个. Net MAUI项目。一个是核心项目,另一个是子项目。我想为所有的通用功能,如样式,字体和控件等创建nuget包。
为此,我在核心项目中添加了MaterialFontIcons.ttf文件,还创建了一个静态FontIconHelper类来访问ttf文件中所有可用的字体。
我想在我的子项目中使用这个相同的图标,所以我在子项目中使用了核心项目的dll文件。我能够访问FontIconHelper类,但我不能访问ttf文件本身。
我必须在我的智利项目中添加MaterialFontIcons. ttf文件,以及当我运行应用程序时只显示图标,否则它会显示"?"图标。
下面是我所做的:
核心项目步骤:
1从https://materialdesignicons.com/下载的材料设计字体文件
2在资源--〉字体文件夹中添加了MaterialFontIcons.ttf。
3将其构建操作设置为MauiFont。
4在依赖项注入中注册字体以在子项目中使用它。
5创建静态FontIconHelper.cs类以访问ttf图标/字体。
5我已经构建了解决方案,并从它的/bin文件夹中获取了. dll文件
字体IconHelper.cs类
public static class FontIconHelper
{
public const string MaterialDesignIconsFont = "MaterialDesignIconsFont";
public const string VectorSquare = "\U000f0001";
public const string AccessPointNetwork = "\U000f0002";
public const string AccessPoint = "\U000f0003";
public const string Account = "\U000f0004";
}
子项目步骤:
1我在这里添加了从主项目生成的dll文件。2尝试访问Xaml中的FontIcon,如下所示:
Added name space: xmlns:helper="clr-namespace:Mobile.UI.Core.Helpers;assembly=Mobile.UI.Core"
<Image x:Name="image" HeightRequest="20" HorizontalOptions="EndAndExpand">
<Image.Source>
<FontImageSource
Glyph="{x:Static helper:FontIconHelper.AccessPoint}"
Size="20"
Color="Black"
FontFamily="{x:Static helper:FontIconHelper.MaterialDesignIconsFont}"/>
</Image.Source>
</Image>
3当运行应用程序时,它显示带有"?"的方形,而不是实际的图标。
4然后我在Chile项目中添加了ttf文件,并将其构建操作设置为MauiFont,并在MauiProgram.cs中注册了该字体,如下所示:
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("MaterialdesignIcons-Font.ttf", "MaterialdesignIconsFont");
})
.ConfigureServices();
之后,在应用程序中显示图标属性。
有人知道如何直接从核心项目访问Fonts.ttf文件到子项目,而不将其添加到子项目吗?
1条答案
按热度按时间7kqas0il1#
尝试使用以下命令将新文件“AssemblyInfo.cs”添加到核心项目根文件夹: