iOS项目中的Xamarin工作室文件夹结构问题

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

感谢帮助。

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

一旦你这样做,有多种方式来实现你的目标:

第一个选项是指定一个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属性会覆盖相对path名称。 在这种情况下,它将被复制为简单的icon.png

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

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

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

第二个select是将您的图像文件简单地移动到Resources文件夹中。 Resources文件夹是一个特殊的目录,在复制到iOS应用程序包时会从默认path名称中除去。 换句话说, Resources\icon.png将被复制到iOS应用程序包的根目录中,而不是像普通项目目录中的那样,以icon.png而不是像Resources\icon.png

第三个选项是简单地注册自己的其他“资源”目录(并且可以存在于其他目录中,包括默认的资源目录)。

例如,你可以在你的项目中有这个结构:

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

在你的* .csproj文件中,编辑下面的标签:

 <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> 

并将其replace为:

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

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

Xamarin有两种方法来设置你想在iOS软件包中出现的文件:

  1. 将它们放在任何文件夹中,并将“构build操作”标记为“内容”。 无论你的项目中有什么目录结构将出现在主包中。
  2. 将它们放在“资源”文件夹中,“生成操作”为“BundleResource”,与#1相同,但从包中的path中删除“Resources”文件夹。 这是一个很好的地方,把你想要的所有图像放在你的包的根目录,但会混乱你的项目。