System.Reflection.Assembly不包含' GetExecutingAssembly'的定义。

时间:2016-02-26 15:33:51

标签: c# xamarin xamarin.forms portable-class-library

我正在尝试使用 Xamarin.Forms (可移植类库)创建移动应用程序,在下面的代码中,我不能使用`GetExecutingAssembly:

    using System;
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;
    using System.Reflection;
    using System.IO;
    using PCLStorage;    

    namespace MnakbAlshaba
    {
        public class BookPage : ContentPage 
        {

            //      
            private void SetBookPagesRows()
            {
                var assembly = typeof(BookPage).GetTypeInfo().Assembly.GetExecutingAssembly();//error
                var resourceName = "MyCompany.MyProduct.MyFile.txt";

                using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                using (StreamReader reader = new StreamReader(stream))
                {
                    string result = reader.ReadToEnd();
                }
            }
        }
    }

我收到以下错误:

  

' System.Reflection.Assembly'不包含的定义   ' GetExecutingAssembly'没有扩展方法' GetExecutingAssembly'   接受类型' System.Reflection.Assembly'的第一个参数。可以   找到(你错过了使用指令或程序集   参考?)C:......

我该怎么办?

3 个答案:

答案 0 :(得分:3)

var assembly = Assembly.GetAssembly(typeof(BookPage));

答案 1 :(得分:1)

至关重要的是要理解 Portable Class Library / PLC 作为平台配置文件并不存在。正在运行的应用程序不会产生与编译PLC项目时编译器相同的限制。

这是突破障碍的一种方法:

using System;
...
try {
    var getExecutingAssembly = typeof(Assembly).GetRuntimeMethods()
                                .Where(m => m.Name.Equals("GetExecutingAssembly"))
                                .FirstOrDefault();
    var assemblies = getExecutingAssembly.Invoke(null, null);
} catch(Exception exc){
   ... try something else
} finally{
   ... time for some alternative 
}

此方法只会让您获得沙盒装配环境中的可访问程序集。但它为您提供了如何访问"东西的起点。你不应该这样做。

答案 2 :(得分:1)

确保没有在某个地方创建您自己的Assembly类。
如果存在,则编译器将在其中寻找GetExecutingAssembly()方法。

我不小心这样做了,这就是为什么我在这里。

您可以通过重命名Assembly类或添加特定的位置来修复它,该位置通常由于using语句而遗漏了。

System.Reflection.Assembly.GetExecutingAssembly()
要么 System.Reflection.Assembly.GetAssembly(type)