System.Reflection.Assembly 不包含“GetExecutingAssembly”的定义
Posted
技术标签:
【中文标题】System.Reflection.Assembly 不包含“GetExecutingAssembly”的定义【英文标题】:System.Reflection.Assembly does not contain a definition for 'GetExecutingAssembly' 【发布时间】:2016-06-09 21:43:30 【问题描述】:我正在尝试使用 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”类型的第一个参数可以 被发现(您是否缺少 using 指令或程序集 参考?)C:...
我该怎么办?
【问题讨论】:
How to read a resource file within a Portable Class Library?的可能重复 @2kay 同样的错误,即使我在静态模式下调用它.. @Gusman ..我应该做什么:(我厌倦了从 xamarin.forms 读取文件:( 你看帖子了吗??? @Gusman 我正在阅读谢谢 :) 【参考方案1】:var assembly = Assembly.GetAssembly(typeof(BookPage));
【讨论】:
“System.Reflection.Assembly”不包含“GetAssembly”的定义 我也遇到了同样的问题【参考方案2】:确保您没有在某处创建自己的 Assembly 类。
如果存在,编译器将在其中查找GetExecutingAssembly()
方法。
我不小心做了这件事,这就是我在这里的原因。
您可以通过重命名您的 Assembly 类或添加由于 using 语句而通常被遗漏的特定位置来修复它。
System.Reflection.Assembly.GetExecutingAssembly()
要么
System.Reflection.Assembly.GetAssembly(type)
【讨论】:
【参考方案3】:了解作为平台配置文件的可移植类库/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
这种方法只会在沙盒程序集环境中为您生成可访问的程序集。但它为您提供了如何访问您不应该访问的“东西”的起点。
【讨论】:
以上是关于System.Reflection.Assembly 不包含“GetExecutingAssembly”的定义的主要内容,如果未能解决你的问题,请参考以下文章