11

我在使用 xamarin 文件夹时遇到问题。目前我正在编写 xamarin iOS 项目。在 Xcode 中,我使用目录对图像进行分组,可能有多个级别的嵌套文件夹,但是当我为设备或 iOS 模拟器构建项目时,这些资源只是被复制到主包中,没有任何文件夹结构。我无法在 xamarin 工作室中达到相同的行为。每当我在项目中创建文件夹并将图片或其他资源放入其中时,都会在实际设备上重新创建此文件夹结构,因此,在加载图像时,我会遇到不同的路径。如何让 xamarin studio 简单地将文件夹中的文件复制到主包,而不是重新创建文件夹结构?

感谢帮助。

4

2 回答 2

16

我的第一个建议是将BuildAction图像的属性更改为BundleResource.

一旦你这样做了,有多种方法可以实现你的目标:

第一个选项是将 a 指定为LogicalName您希望将名称包含在已编译的应用程序包中的任何名称。目前没有办法为文件Resource ID以外的任何东西设置(LogicalName 属性的 UI 名称)EmbeddedResource(我将立即修复该问题),但您可以像这样编辑 *.csproj:

<BundleResource Include="Icons\icon.png">
  <LogicalName>icon.png</LogicalName>
</BundleResource>

通常,该Icons\icon.png文件将作为 复制到 iOS 应用程序包中Icons/icon.png,但是,LogicalName 属性会覆盖相对路径名。在这种情况下,它将被简单地复制过来icon.png

作为另一个例子,你也可以这样做:

<BundleResource Include="Icons\iOS\icon.png">
  <LogicalName>AppIcon.png</LogicalName>
</BundleResource>

这会将Icons\iOS\icon.png文件复制到 iOS 应用程序包的根目录中,并将其重命名为AppIcon.png.

第二种选择是简单地将图像文件移动到Resources文件夹中。Resources 文件夹是一个特殊目录,当复制到 iOS 应用程序包时,它会从默认路径名中删除。换句话说,Resources\icon.png它将被复制到 iOS 应用程序包的根目录中,icon.png而不是Resources\icon.png像普通项目目录那样。

第三种选择是简单地注册您自己的其他“资源”目录(它们可以存在于其他目录中,包括默认的资源目录)。

例如,您的项目中可能具有以下结构:

Resources/
   Icons/
      icon.png
      icon@2x.png

在您的 *.csproj 文件中,编辑以下标签:

<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>

并将其替换为:

<IPhoneResourcePrefix>Resources;Resources\Icons</IPhoneResourcePrefix>

这将确保 icon.png 和 icon@2x.png 文件安装在 iOS 应用程序包的根目录中。

于 2013-06-05T23:34:26.060 回答
1

Xamarin 有两种方法来设置您想要在 iOS 包中显示的文件:

  1. 将它们放在任何文件夹中,并将“构建操作”标记为“内容”。您在项目中拥有的任何目录结构都将出现在主包中。
  2. 将它们放在“Resources”文件夹中,将“Build Action”作为“BundleResource”,这与#1 相同,但从包中存在的路径中删除“Resources”文件夹。这是一个将您想要的所有图像放在包的根目录中的好地方,但会使您的项目混乱。
于 2013-06-05T11:59:28.520 回答