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