gpt4 book ai didi

c# - 哪个更适合获取程序集位置,GetAssembly().Location 或 GetExecutingAssembly().Location

转载 作者:可可西里 更新时间:2023-11-01 03:13:56 25 4
gpt4 key购买 nike

请建议哪个最适合获取执行程序集位置。

Assembly.GetAssembly(typeof(NUnitTestProject.RGUnitTests)).Location

Assembly.GetExecutingAssembly().Location 

请建议哪个更好。我也可以使用 GetEntryAssembly() 吗?

最佳答案

这取决于你想要什么。

  • Assembly.GetAssembly 返回声明了 type 的程序集。
  • Assembly.GetExecutingAssembly 返回正在执行当前代码的程序集。
  • Assembly.GetEntryAssembly 返回进程可执行文件。请记住,这可能不是您的可执行文件。

例如,假设您的代码位于 myexecutable.exe 上。

trdparty.exe 使用 Assembly.LoadFile 加载您的可执行文件并通过反射运行一些代码。

myexecutable.exe 使用类型 MyClass

但是 trdparty.exe 会修补您的代码以使用位于 Patch.dll 中的新版本的 MyClass

现在,如果您单独运行您的应用程序,您会得到以下结果:

Assembly.GetAssembly(typeof(MyClass)) -> myexecutable.exe
Assembly.GetExecutingAssembly() -> myexecutable.exe
Assembly.GetEntryAssembly() -> myexecutable.exe

但是如果你有上面提到的场景,你会得到:

Assembly.GetAssembly(typeof(MyClass)) -> Patch.dll
Assembly.GetExecutingAssembly() -> myexecutable.exe
Assembly.GetEntryAssembly() -> trdparty.exe

因此,作为回应,您应该使用能够提供您想要的结果的回应。答案似乎很明显,它是 Assembly.GetExecutingAssembly(),但有时并非如此。假设您正在尝试加载与可执行文件关联的 application.config 文件,那么路径很可能是 Assembly.GetEntryAssembly().Location 以始终获取路径的“过程”。

正如我所说,这取决于场景和目的。

关于c# - 哪个更适合获取程序集位置,GetAssembly().Location 或 GetExecutingAssembly().Location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com