我在使用xamarin文件夹时遇到麻烦。目前,我正在编写xamarin iOS项目。在Xcode中,我使用目录对图像进行分组,可能会有多层嵌套文件夹,但是当我为设备或iOS模拟器构建项目时,这些资源仅被复制到主 bundle 包中,而没有任何文件夹结构。我在xamarin Studio中无法达到相同的行为。每当我在项目中创建文件夹并将图片或其他资源放入其中时,都会在实际设备上重新创建此文件夹结构,因此,在加载图像时,我会尝试使用不同的路径。如何使xamarin Studio简单地将文件夹中的文件复制到主 bundle 包中,而不是重新创建文件夹结构?
感谢帮助。
最佳答案
我的第一个建议是将图像的BuildAction
属性更改为BundleResource
。
完成此操作后,有多种方法可以实现您的目标:
第一种选择是将LogicalName
指定为您希望名称出现在已编译应用程序 bundle 包中的任何名称。目前,除了Resource ID
文件(我将暂时修复该问题)之外,没有其他方法可以设置EmbeddedResource
(LogicalName属性的UI名称),但是您可以像这样编辑* .csproj:
<BundleResource Include="Icons\icon.png">
<LogicalName>icon.png</LogicalName>
</BundleResource>
通常,该
Icons\icon.png
文件将作为Icons/icon.png
复制到iOS应用程序 bundle 包中,但是LogicalName属性将覆盖相对路径名。在这种情况下,它将被复制为icon.png
。作为另一个示例,您还可以执行以下操作:
<BundleResource Include="Icons\iOS\icon.png">
<LogicalName>AppIcon.png</LogicalName>
</BundleResource>
这会将
Icons\iOS\icon.png
文件复制到iOS应用程序 bundle 包的根目录中,并将其重命名为AppIcon.png
。第二种选择是将图像文件简单地移动到
Resources
文件夹中。 Resources文件夹是特殊目录,当复制到iOS应用程序 bundle 包时,该目录会脱离默认路径名。换句话说,Resources\icon.png
将作为icon.png
复制到iOS应用程序 bundle 包的根目录中,而不是像普通项目目录那样将Resources\icon.png
复制到iOS应用程序包的根目录中。第三种选择是简单地注册您自己的其他“资源”目录(它们可以存在于其他目录中,包括默认的“资源”目录)。
例如,您可以在项目中使用结构:
Resources/
Icons/
icon.png
icon@2x.png
然后在您的* .csproj文件中,编辑以下标记:
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
并替换为:
<IPhoneResourcePrefix>Resources;Resources\Icons</IPhoneResourcePrefix>
这将确保将icon.png和icon@2x.png文件安装在iOS应用 bundle 包的根目录中。