如何在不同的.NET项目类型之间共享图像?(WPF,MAUI)

tjrkku2a  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(178)

我们正在做一个新的项目,我们试图把我们所有的图像到一个集合。

Core.Images.csproj
- PNG
-- Image1.png
-- Image2.png
- SVG
-- Image1.svg
-- Image2.svg

我们的主应用程序将是一个WPF应用程序。我们打算使用DevExpress,并希望使用他们的SplashScreenManager,这需要一个DXSplashScreenViewModel。将徽标放入此ViewModel的唯一选项是Uri对象。据我所知,这在WPF应用程序中很常见。预期的URI格式如下所示:pack://application:,,,/Core.Images;component/PNG/Image2.png但这只适用于Core.Images.csproj内部的PropertyGroup将构建目标设置为net6.0-windows并启用Wpf。文件必须设置为“资源”。

<PropertyGroup>
    <TargetFramework>net6.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    ...
  </PropertyGroup>
  ...
  <ItemGroup>
    <Resource Include="PNG\Image1.png" />
    <Resource Include="PNG\Image2.png" />
    <Resource Include="SVG\Image1.svg" />
    <Resource Include="SVG\Image2.svg" />
  </ItemGroup>
  ...

我们现在遇到的问题是,我们需要在.NET MAUI中开发的解决方案中添加另一个应用程序。我们一直在努力使这个小程序集兼容这两个项目,但似乎找不到方法。
有没有可能用一个库来实现这一点,或者我们需要将使用过的图像复制到第二个程序集?

8ftvxx2r

8ftvxx2r1#

假设你的MAUI应用是针对Android的,你的Core.Images.csproj应该看起来像这样:

<PropertyGroup>
  <TargetFrameworks>net6.0-windows;net6.0-android</TargetFrameworks>
  <ImplicitUsings>enable</ImplicitUsings>
  <Nullable>enable</Nullable>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0-windows'">
    <UseWPF>true</UseWPF>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0-android'">
    <UseMaui>true</UseMaui>
</PropertyGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-windows'">
    <Resource Include="Images\image.png" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-android'">
    <MauiImage Include="Images\*" />
</ItemGroup>

你也可以使用其他平台。我希望这是有帮助的,在我这边工作。如果有些想法是不可理解的,请随意提问。请注意,您的图像名称只能包含小写字母、数字和'_'。

相关问题