在.net框架中,我们可以使用以下方式获取启动程序集:
Assembly.GetEntryAssembly();
但这已从 .NET Core 中删除。也没有AppDomain。如何访问 .NET Core 和 Windows 通用应用程序中的入口程序集?
(我需要找到其所有嵌入的资源键)
Assembly.GetEntryAssembly()
在 .NET Standard 1.5 中可用,但在版本 1.0 到 1.4 中不可用。如果您仅开发 .NET Core 和Universal Windows 应用程序,版本 1.5 应该足以满足您的需求。
如果我没记错的话,
AppDomain
注定会出现在.NET Standard 2.0中。现在无法使用。
GetEntryAssembly
和所有其他方法返回“.dll”文件,而不是像 .NET Framework 中那样返回“.exe”文件。如果您在从 .NET Framework 升级到 .NET Core 时使用类似
Assembly.Location
等内容,这可能会引入静默错误。
在图书馆:
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();
....
}
}