繁体   English   中英

如何从 Xamarin Forms iOS 资产目录中删除“未知”图像

[英]How to removed "Unknown" images from Xamarin Forms iOS Asset Catalog

在为 Xamarin Forms iOS 应用程序更新资产目录中的图像时,有时我有时会在图像集中显示额外的图像,有时会在图像集中显示正确的图像,有时当@2x 等未分配给我尝试将我的图像更改合并到我的项目版本之间。 我无法清除这些图像,并且当您在资产目录中右键单击这些图像时,没有选项可以取消分配。 即使通过 Visual Studio IDE 从资产目录中删除图像集似乎也无法正常工作,因为我开始收到一些编译时错误,即在 Assets.xcasstes 文件夹中找不到图像文件。 任何想法如何正确合并/处理这种情况? 我不希望手动重新更新我项目的第二个版本(即分支)中的图像。

所以使用下面的步骤,我能够清理东西,但这是一个非常手动的过程。 仍在寻找一种在分支之间合并 iOS 图像的好方法。 以下步骤适用于 PC 上的 VS 2019。

仅供参考 - 如果您的项目是版本控制的,我建议在每次更改后执行检查。

  1. Go 进入包含“未知”图像的图像集中,并取消设置任何实际设置的图像。 (您可以通过右键单击图像并从弹出菜单中选择取消设置来执行此操作。)完成后保存项目/资产。
  2. 取消设置所有图像后,您只能看到图像集中的“未知”图像,select 左侧窗格中的图像集名称,然后单击资产管理器 window 左上方区域附近的删除按钮。 再次保存项目。
  3. 单击解决方案资源管理器中的 iOS 项目和 select 解决方案资源管理器 window 顶部工具栏中的“显示所有文件”选项。 您现在应该在 iOS 项目下看到一个名为 Assets.xcassets 的文件夹。
  4. 展开 Assets.xcassets 文件夹并确保您没有看到您删除的图像集的文件夹。 例如,如果您删除名为“help”的图像集,请确保在 Assets.xcassets 文件夹下看不到名为 help.imageset 的文件夹。 如果您确实看到刚刚删除的图像集的文件夹,您可能需要手动将 go 放入文件资源管理器并从磁盘驱动器中删除该文件夹。
  5. 一旦图像集的文件夹不再存在于 Assets.xcassets 文件夹中,我强烈建议您清理整个项目。
  6. 接下来从弹出菜单中右键单击 iOS 项目和 select '卸载项目'。
  7. 卸载项目后,XXX.iOS.csproj 文件(其中 XXX 是项目的名称)应在 Visual Studio 编辑器中自动打开。 您现在需要在此 csproj 文件中搜索您删除的映像集名称的所有实例,并删除您找到的所有 XML 条目。 例如,如果我删除了“配置”图像集,并且在我的 csproj 文件中找到了以下条目,我将删除所有 XML 条目。 注意:我无法在此处实际显示 XML,因此我将其放在单独的答案中,以便每个人都可以看到。

重要.. - 另外 - 确保在 Assets.xcassets 下的文件夹中确保没有 Images.imageset 文件夹,除非您实际使用名为 Images 的资产图像集。 否则删除此文件夹并确保在 iOS.csproj 文件中未引用该文件夹/文件。

  1. 从不再属于资产目录的图像中删除所有条目后,请保存 iOS csproj。 然后右键单击解决方案中的 iOS 项目和 select '重新加载项目'。

  2. 您现在应该能够重新编译项目而不会出现错误。 记住 - 经常将您的项目签入到您的版本控制系统,尤其是此时。

  3. 现在您可以将 go 返回到您的资产目录并重新添加所需的图像集。

在此之后,一切都应该正常工作。

所以由于某种原因,我无法让我在上面发布的 XML 代码实际显示,所以我将尝试将其发布在这里。

<ImageAsset Include="Assets.xcassets\config.imageset\config.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\config.imageset\config@2x.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\config.imageset\config@3x.png">
  <Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Assets.xcassets\config.imageset\Contents.json">
  <Visible>false</Visible>
</ImageAsset>

<ItemGroup>
  <ImageAsset Include="Assets.xcassets\Images.imageset\qrbuttonlight32.png">
    <Visible>false</Visible>
  </ImageAsset>
</ItemGroup>
<ItemGroup>
  <ImageAsset Include="Assets.xcassets\Images.imageset\qrbuttonlight64.png">
   <Visible>false</Visible>
  </ImageAsset>
</ItemGroup>
<ItemGroup>
  <ImageAsset Include="Assets.xcassets\Images.imageset\qrbuttonlight96.png">
   <Visible>false</Visible>
  </ImageAsset>
</ItemGroup>

您需要确保删除完整的 XML 标记 - 在这种情况下,它将是配置图像集中每个文件的整个 ImageAsset XML 节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM