【发布时间】:2021-12-04 00:48:31
【问题描述】:
我在 Windows 上找到了许多与 .NET Core 3.1 和 .NET 5.0 相关的答案,但到目前为止,我还无法找到如何在 .NET Core 下获取原始程序集位置em>Linux 使用单文件可执行文件时。鉴于系统行为不同,我认为这可能是 .NET 5 中的一个错误,但同时我需要一个解决方法。请注意,在我的场景中,当前目录是 not 原始可执行文件所在的位置,即使我不更改它,我也无法控制它(无论如何这是一个 hack——当前目录的目的完全不同)。以下是此场景下测试程序的实际输出,其中包含我迄今为止能够找到的所有其他帖子中建议的属性和功能:
Directory.CurrentDirectory()=/home/ec2-user/source
typeof(Program).Assembly.Location=/root/.net/Test/jwaxs3pc.bdp/Test.dll
typeof(Program).Assembly.GetFiles() [0].Name=/root/.net/Test/jwaxs3pc.bdp/Test.dll
typeof(Program).Assembly.GetName().CodeBase=file:///root/.net/Test/jwaxs3pc.bdp/Test.dll
AppContext.BaseDirectory=/root/.net/Test/jwaxs3pc.bdp/
Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName=/root/.net/Test/jwaxs3pc.bdp
我需要找到原始代码位置,而不是单文件可执行文件解压到的位置。我如何获得这些最基本的信息?有没有一种独立于平台和设置的方式来做到这一点(真的应该有)?
【问题讨论】:
标签: .net linux .net-core .net-5