iOS项目中的Xamarin studio文件夹结构问题

kyu*_*yan 10 xamarin.ios ios xamarin xamarin-studio

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

感谢帮助.

jst*_*ast 16

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

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

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

<BundleResource Include="Icons\icon.png">
  <LogicalName>icon.png</LogicalName>
</BundleResource>
Run Code Online (Sandbox Code Playgroud)

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

再举一个例子,你也可以这样做:

<BundleResource Include="Icons\iOS\icon.png">
  <LogicalName>AppIcon.png</LogicalName>
</BundleResource>
Run Code Online (Sandbox Code Playgroud)

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

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

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

例如,您可以在项目中使用该结构:

Resources/
   Icons/
      icon.png
      icon@2x.png
Run Code Online (Sandbox Code Playgroud)

在*.csproj文件中,编辑以下标记:

<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
Run Code Online (Sandbox Code Playgroud)

并替换为:

<IPhoneResourcePrefix>Resources;Resources\Icons</IPhoneResourcePrefix>
Run Code Online (Sandbox Code Playgroud)

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