【问题标题】:Which DLL contains the code of the code behind of a SVC-file?哪个 DLL 包含 SVC 文件背后的代码?
【发布时间】:2015-07-04 12:25:44
【问题描述】:

我正在制作一个工具,用于扫描当前计算机的驱动器以查找我们公司开发的应用程序。如果它遇到我们的服务之一(SVC 文件),它也应该获得该代码的版本。为此,它应该找出哪个 DLL 保存了 SVC 文件后面的代码。

SVC 文件仅包含命名空间和类的名称,而不包含 DLL 的名称。 BIN 文件夹包含多个 DLL,那么它可能是哪一个...?

在这种情况下,我们不能假设程序集与(根)命名空间具有相同的名称,因此这没有任何帮助。

我能想到的唯一方法是在单独的 AppDomain 中打开所有 DLL 并检查所有包含的命名空间 + 类。

有人知道更快的方法吗?

【问题讨论】:

  • 包含 .svc 文件中引用的类型的那个。 WCF 还将扫描该命名空间和类型的程序集。
  • @CodeCast:所以......你是说扫描所有程序集是唯一的解决方案?
  • 嗯,是的,服务类型可以驻留在任何程序集中。这听起来可能效率低下,但您需要此工具这一事实意味着您没有适当的应用程序生命周期/发布管理,这本身就效率低下。
  • 关于生命周期/发布管理,您是绝对正确的。我们公司意识到这一点并正在努力解决它。第一步:了解所有混乱情况;)
  • 好。当然没有冒犯的意思。 :)

标签: c# .net wcf dll


【解决方案1】:

按照建议,该软件现在正在扫描所有可能属于 SVC 文件的程序集。创建单独的 AppDomain 以反映每个单独的 DLL 非常慢。于是我在想:“其他程序是如何处理这个问题的?”,于是我看了一下ILSpy

ILSpy 使用Mono.Cecil 来反映程序集。它以二进制级别读取程序集,并且不创建单独的 AppDamain。它甚至返回比正常反射更多的信息。

我下载了这个 DLL 并在我的应用程序中使用它并且运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多