.NET Core 中的 Assembly.GetEntryAssembly() 等效项是什么?

问题描述 投票:0回答:3

在.net框架中,我们可以使用以下方式获取启动程序集:

Assembly.GetEntryAssembly();

但这已从 .NET Core 中删除。也没有AppDomain。如何访问 .NET Core 和 Windows 通用应用程序中的入口程序集?

(我需要找到其所有嵌入的资源键)

c# .net asp.net-core windows-10-universal .net-core
3个回答
9
投票

Assembly.GetEntryAssembly()
.NET Standard 1.5 中可用,但在版本 1.0 到 1.4 中不可用。如果您仅开发 .NET Core 和Universal Windows 应用程序,版本 1.5 应该足以满足您的需求。

如果我没记错的话,

AppDomain
注定会出现在.NET Standard 2.0中。现在无法使用。


0
投票
.NET Framework 和 .NET Core(包括 .NET 5-8 等)之间的一个重要区别是,使用 .NET Core 时,在通过启动“.exe”文件启动的控制台或 Windows 应用程序中,

GetEntryAssembly

 和所有其他方法返回“.dll”文件,而不是像 .NET Framework 中那样返回“.exe”文件。如果您在从 .NET Framework 升级到 .NET Core 时使用类似 
Assembly.Location
 等内容,这可能会引入静默错误。


-1
投票
我最终将入口组件注入到库中。

在图书馆:

class AssemblyHelper { // This can be called instead of Assembly.GetEntryAssembly() public static Func<Assembly> GetEntryAssembly; }

在启动应用程序(使用该库)中:

class Program { public static void Main() { AssemblyHelper.GetEntryAssembly = () => typeof(Program).GetAssembly(); .... } }
    
© www.soinside.com 2019 - 2024. All rights reserved.