需要在我的.NET Core应用程序中嵌入一个json文件作为测试源。这篇文章的作者http://codeopinion.com/asp-net-core-embedded-resource/提供了包含使用var assembly = Assembly.GetExecutingAssembly();
的示例代码。但是,当我尝试这样做时,我收到错误:Cannot resolve symbol ‘GetExecutingAssembly’ and ‘Assembly’ does not contain a definition for ‘GetExecuringAssembly’
答案 0 :(得分:28)
如果您的目标是.NET Standard 1.5或更高版本,则可以调用以下任何一种方法:
System.Reflection.Assembly.GetExecutingAssembly();
System.Reflection.Assembly.GetEntryAssembly();
System.Reflection.Assembly.GetCallingAssembly();
如果定位早期版本的.NET Standard,那么typeof(SomeClass).GetTypeInfo().Assembly
方法是唯一的方法。
答案 1 :(得分:23)
1.5版之前的.NET Standard中没有“静态”程序集类。相反,你必须做类似
的事情typeof(<AClassHere>).GetTypeInfo().Assembly
应该在要加载的程序集中的类/类型的名称替换。
答案 2 :(得分:4)
不,它在.NET Core 1.0 / 1.1中不可用。
但是,如果我没记错的话,它会回到.NET Core 2.0和将要在今年晚些时候发布的netstandard2.0
,它将具有更大的API表面并增加与写入的库的兼容性.NET&gt; = 4.5,可以更轻松地将它们移植到.NETStandard 2.0 / 2.1。
但是许多API实现都依赖于平台。意思是,您可以在任何地方调用SomeAPI.GetSomething()
,但如果在.NET Core上运行,它可能会抛出PlatformNotSupportedException
。
但是大多数关于程序集扫描和发现的API应该回到.NET Core / Standard 2.0中。由于.NET Core中没有AppDomain,并且应该使用进程隔离,因此AppDomain
周围的内容仍然会丢失。