【发布时间】:2013-06-21 01:45:43
【问题描述】:
我想在我的应用程序运行时修改 Assembly.Location 属性。我正在从资源中加载 .NET 程序集,而加载的程序集(从内存中加载)的该字段为空,它会破坏应用程序的功能。
我无法控制他们的源代码。我知道如何在我自己的代码中解决这个错误,但事实并非如此。当他们使用 Assembly.Location 并获得一个空字符串时,问题就开始了。
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx
它是只读的。有什么低级的方法吗?有什么想法吗?
我的应用程序是嵌入在资源中的那些应用程序的加载器,因此它不依赖于它们。尝试从内存中加载任何程序集并检查这些已加载程序集的 Assembly.Location 字段,它将为空白。它们没有位置,因为它们是从内存中加载的,但我仍然想通过 .NET 内部修改或任何其他方法来更改它。
压缩的程序集无法解压缩到磁盘。如果您知道如何实现它,我不介意重大问题的危险。
【问题讨论】:
-
为什么你要这样做?请给我们更多背景信息 - 可能会有更好的方法。
-
那么它破坏了 什么 功能?这些程序集是您控制的吗?如果是这样,您应该查看是否可以将它们修复为不依赖此属性。
-
所有这些都是应该在你的问题中出现的上下文。
-
我不同意票数接近的情况。这个问题不是太本地化......它目前处于一般环境中,并解决了图书馆开发人员真正关心的问题,一个没有很好记录的问题。我相信这个问题是有道理的。
-
鉴于这与“收官之战”博客文章相关联,并且有一个指向 +11 问题的链接,该问题本质上是在问同样的事情,它看起来像是一个方面“由于个性而投反对票”。
标签: .net reflection reverse-engineering