.NET Maui 7类库NuGet包嵌入图片的解决方案
.NET Maui 7类库NuGet包嵌入图片解决方法
修正项目文件的资源配置
打开类库的.csproj文件,给MauiImage类型的图片加上PrivateAssets="None"和Pack="true"属性,确保资源能被NuGet包包含并对外暴露:<ItemGroup> <!-- 匹配所有图片文件 --> <MauiImage Include="Resources\Images\**" Pack="true" PrivateAssets="None" /> <!-- 或者单个指定 --> <!-- <MauiImage Include="Resources\Images\your-icon.png" Pack="true" PrivateAssets="None" /> --> </ItemGroup> `PrivateAssets="None"`是关键——默认资源是私有属性,不会被消费项目访问;`Pack="true"`明确告诉MSBuild把这些资源打包进NuGet。确认NuGet打包范围
可以在.csproj的PropertyGroup里添加配置,确保所有必要资产都被包含:<PropertyGroup> <PackageIncludeAssets>all;$(PackageIncludeAssets)</PackageIncludeAssets> </PropertyGroup>修正自定义视图的图片引用路径
自定义视图里引用图片时,必须带上类库的标识,不能直接用相对路径:- XAML中引用:
<Image Source="你的类库项目名/Resources/Images/your-icon.png" /> - C#代码中引用(更可靠,避免路径问题):
// 替换成你的类库命名空间和图片路径 image.Source = ImageSource.FromResource("YourLibraryName.Resources.Images.your-icon.png", typeof(你的自定义视图类).Assembly);
注意代码里的资源路径是命名空间格式:项目名.文件夹层级.文件名,和项目的目录结构对应。
- XAML中引用:
重新打包测试
执行以下命令清理并打包:dotnet clean dotnet pack -c Release把
bin/Release下生成的NuGet包安装到测试项目,验证图片是否正常显示。
内容的提问来源于stack exchange,提问作者Thomas Carlton
相关产品推荐
相关产品推荐

