2010-06-07 39 views
0

我试图设置一个web应用程序(在ii7/win7上的32位,32位设置已启用,一切都编译为x86,使用vs2008),但显然有一些dll发生模块加载问题。我一直在观看procmon和fusion日志,但是我没有看到缺少dll的名字。生成一个asp.net的web应用程序的dll需求列表

我是一个完全新手到asp.net(但在其他平台上相当沉重的经验)。

我知道我可以在一个二进制文件上调用depends.exe来查看依赖关系是什么,但是如何为asp.net做到这一点?具体而言,是否有可能获得iis7为我的应用程序加载的dll列表?

更新:我手动吹走了我的应用程序的所有二进制文件,并重建(干净似乎没有伎俩,我猜)。它现在有点工作。或者至少它会越来越细致。

回答

1

一个asp.net web项目的dll不应该依赖任何不属于默认.net运行时或在项目中明确引用的内容。我会从审查参考文献开始。 Noramlly一个asp.net web项目有一个bin文件夹,其中包含编译后的网站/ web应用程序以及它所依赖的任何dll(除了.net运行时)。这通常由用于创建项目的编程工具完成。

如果你仍然没有找到罪魁祸首,你可以尝试使用Filemon(http://technet.microsoft.com/en-gb/sysinternals/bb896642.aspx),并使用它来观察IIS,看看它正在寻找什么文件,没有找到。

另一个选项是检查应该包含在网站/应用程序中的web.config文件。它是一个XML文件,通常有一个Assemblies部分列出应该加载的程序集。例如,你可能会看到:

<assemblies> 
    <add assembly="MySql.Data, Version=6.2.3.0, Culture=neutral, 
    PublicKeyToken=C5687FC88969C44D"/> 
</assemblies> 

这意味着代码要使用MySQL.Data.dll,特别是DLL的6.2.3.0版本。可以同时安装不同版本的.Net dll文件。所以你可能有所需的DLL,但不是Web.Config文件中指定的正确版本。

+0

这是一个坚实的建议(虽然filemon现在是procmon的一部分),我基本上正在尝试这样做。我想知道是否有办法以某种方式获得更多的调试信息。像每个正在打开的dll架构,自动? 无论哪种方式投票,因为你是对的。 – 2010-06-07 14:48:52

+0

关于你的编辑:这是一个很好的观点。我chceeked了,但它完全可能是我的.net安装程序在这台机器上被破坏。这是我第二周用win7。我会研究潜在的dll不匹配(即一些来自net2.0,一些来自3.5) – 2010-06-07 16:09:14

+0

希望它有帮助。我没有想法。 – 2010-06-07 17:38:28