Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从共享项目获取嵌入式资源_C#_Svg_Xamarin.forms - Fatal编程技术网

C# 从共享项目获取嵌入式资源

C# 从共享项目获取嵌入式资源,c#,svg,xamarin.forms,C#,Svg,Xamarin.forms,我正在开发一个Xamarin表单应用程序,它有两个项目,一个Android应用程序和一个iOS应用程序。所有其他代码都存储在共享项目中 解决方案如下所示: Android项目,引用MyApp.Base MyApp.iOS iOS项目,引用MyApp.Base MyApp.Base共享项目 我使用以下代码从共享项目中读取SVG图像: using (var stream = GetType().Assembly.GetManifestResourceStream("MyApp.Base.image.

我正在开发一个Xamarin表单应用程序,它有两个项目,一个Android应用程序和一个iOS应用程序。所有其他代码都存储在共享项目中

解决方案如下所示:

Android项目,引用MyApp.Base MyApp.iOS iOS项目,引用MyApp.Base MyApp.Base共享项目 我使用以下代码从共享项目中读取SVG图像:

using (var stream = GetType().Assembly.GetManifestResourceStream("MyApp.Base.image.svg"))
{
    // do work here...
}
当图像在Android或iOS项目中时,这非常有效,但我希望图像能够共享,所以我将其放在共享项目中

程序集返回MyApp.Android,因此无法找到映像。我想我忽略了什么,但我还没有找到解决办法


谁能给我指出正确的方向吗?谢谢

您使用的是共享项目,而不是PCL或.Net标准库。因此,在编译时,所有共享项目内容都将合并到特定于平台的项目中。这意味着,即使您将资源嵌入MyApp.Base中,它也会合并到.iOS/.Droid项目中。 我建议您了解有关共享项目与PCL或.Net标准库的更多信息。 以下代码;我没有测试,但这是您应该遵循的方向:

#if __IOS__
    var resourcePrefix = "MyApp.iOS.";
#endif
#if __ANDROID__
    var resourcePrefix = "MyApp.Android.";
#endif

var assembly = IntrospectionExtensions.GetTypeInfo(typeof(SharedPage)).Assembly;
Stream stream = assembly.GetManifestResourceStream
(resourcePrefix + "image.svg");
有关更多信息,请查看此页面:

可能需要查看此页面