Search code examples
.netasp.netassembly-resolution

How are .NET assembly references "translated" to file paths?


I'm trying to troubleshoot a .NET 2.0 error with Outlook Web Access on a SBS 2008 Server.

The error I'm getting is:

Exception information: 
Exception type: HttpException 
Exception message: Could not load file or assembly 'Microsoft.Exchange.Data,     
Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its 
dependencies. The system cannot find the file specified. 
(C:\Program Files\Microsoft\Exchange Server\ClientAccess\owa\web.config line 51) 

On line 51 of web.config, I have:

                this is line 51 ---><add assembly="Microsoft.Exchange.Data,
                Version=8.0.0.0,
                Culture=neutral,
                publicKeyToken=31bf3856ad364e35"/>
            <add assembly="Microsoft.Exchange.Data.Storage,
                Version=8.0.0.0,
                Culture=neutral,
                publicKeyToken=31bf3856ad364e35"/>
        </assemblies>

So in "web.config-ese", how does it "know" where that Microsoft.Exchange.Data assembly .DLL is, and how can I determine this so as to verify that the file exists or not?


Solution

  • It looks in the global assembly cache (GAC) in c:\windows\assembly. It has to be installed in the gac using the gacutil utility to install, which is often installed via the installation process of the program...