Christoph Wienands wrote:
> Executable C':\Program Files\Ticketwizard\MyApp.exe\ had the following
> unrevoerable error:
> Couln't find library MSVCR80.dll (required by
> 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_perf.dll)
>
> Now, the funny thing is my app doesn't use this library at all.
Nasty bug, by design, in C++ in VS2005.
More details here:
http://www.grimes.demon.co.uk/worksh...WSThirteen.htm
The short description is this. C++ (managed and native) now use shared
microsoft libraries through the side-by-side assembly cache. This is
like the GAC but for unmanaged code. Managed C++ uses the CRT in mixed
and pure code to support global objects and other C++ features. The
problem is that your code has to have a manifest indicating the version
of the assembly you want to use and for a DLL this has to be bound to
the DLL as an unmanaged resource. If you don't do this then Windows
refuses to load the library. Even copying the library to the same folder
as your DLL does not work.
If your ASP.NET app uses a C++ DLL (managed or unmanaged) then you'll
get this error if that DLL was built with the C++ import libraries
provided with VS2005. Note that if the C++ DLL was built as part of a
VS2005 project _made with the VS2005 project wizard_ then you'll not get
this problem because the project wizard sneakily adds a build step to
bind the manifest to the DLL.
Richard
--
Fusion Tutorial:
http://www.grimes.demon.co.uk/workshops/fusionWS.htm
Security Tutorial:
http://www.grimes.demon.co.uk/workshops/securityWS.htm