C# iOS和x2B之间是否可以共享资产/资源;机器人项目?
我有一个基于Xamarin的Visual Studio 2015项目,其结构如下 MyApp(便携式) 我的机器人 MyApp.iOS 目前,我在MyApp.Droid项目和MyApp.iOS项目中包括资产/资源 例如,C# iOS和x2B之间是否可以共享资产/资源;机器人项目?,c#,visual-studio,xamarin,xamarin.ios,xamarin.android,C#,Visual Studio,Xamarin,Xamarin.ios,Xamarin.android,我有一个基于Xamarin的Visual Studio 2015项目,其结构如下 MyApp(便携式) 我的机器人 MyApp.iOS 目前,我在MyApp.Droid项目和MyApp.iOS项目中包括资产/资源 例如,myhtml.html与MyApp.Droid/Asserts/myhtml.html和MyApp.iOS/Resources/myhtml.html都是重复的 有什么方法可以避免这种重复吗?假设您使用的是Xamarin表单,是的,您可以使用.net资源文件 您可以在portab
myhtml.html
与MyApp.Droid/Asserts/myhtml.html和MyApp.iOS/Resources/myhtml.html都是重复的
有什么方法可以避免这种重复吗?假设您使用的是Xamarin表单,是的,您可以使用.net资源文件 您可以在portable项目中创建一个文件夹,在其中添加内容文件,并将所有这些文件的编译操作设置为Embedded Resource,然后您可以使用.net提供的机制来访问资源,例如(在本例中,我假设代码在portable项目中包含的类中执行,文件存储在名为ResourceFiles的文件夹中): 这样,您就拥有了包含文件内容的流 另外,作为提示,您可以使用自定义标记扩展名从XAML加载这些文件,例如,下面是从.net资源加载图像的标记扩展名:
[ContentProperty ("Source")]
public class ImageResourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue (IServiceProvider serviceProvider)
{
if (Source == null)
return null;
var imageSource = new StreamImageSource { Stream = async (ct) => this.GetType().GetTypeInfo().Assembly.GetManifestResourceStream(Source) };
return imageSource;
}
}
然后,要在XAML中使用此扩展,您将执行以下操作(local是您自己名称空间的XAML名称空间定义):
假设您使用的是Xamarin表单,是的,您可以使用.net资源文件 您可以在portable项目中创建一个文件夹,在其中添加内容文件,并将所有这些文件的编译操作设置为Embedded Resource,然后您可以使用.net提供的机制来访问资源,例如(在本例中,我假设代码在portable项目中包含的类中执行,文件存储在名为ResourceFiles的文件夹中): 这样,您就拥有了包含文件内容的流 另外,作为提示,您可以使用自定义标记扩展名从XAML加载这些文件,例如,下面是从.net资源加载图像的标记扩展名:
[ContentProperty ("Source")]
public class ImageResourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue (IServiceProvider serviceProvider)
{
if (Source == null)
return null;
var imageSource = new StreamImageSource { Stream = async (ct) => this.GetType().GetTypeInfo().Assembly.GetManifestResourceStream(Source) };
return imageSource;
}
}
然后,要在XAML中使用此扩展,您将执行以下操作(local是您自己名称空间的XAML名称空间定义):
<Image Source="{local:ImageResource MyNamespace.ResourceFiles.MyImage.png}" />