As I used VS.net 2005 to write a win32 console application, and it turned out that I couldn't execute it on other computer without .NET Framework 2.0. As I know this is not the case with VS.net 2003(which using .NET Framework 1.1)
Now I wanna ask "What can I do to make my program run on other computer without installing .NET Framework 2.0 " Or "There ain't any solution "
Thx

Do I need to install .net FX 2.0 on other computer?
Anonymous124124
This doesn't matter. As long as the versions in the embedded (in your EXE) and external (in Microsoft.VC80.CRT folder) manifests match, the version of the actual DLL is totally irrelevant. The fact that both of the manifests are 8.0.50608.0 makes it work. You can test this by opening up your applocal MSVCR80.DLL in a resource editor and changing the version to anything. Since the two manifests match it still loads the DLL. For the purposes of applocal, it actually ignores the DLL's version number .
For non-applocal apps this is handled by a policy file.
You never need .NET Framework 2.0 for an unmanaged app that relies on the CRT. Only applocal files or the vcredist_x86.exe (or a homemade one using MSM) installed to WinSxS.
David Kleinot
thank you very much!
mrcvolvo
What you do need is probably the CRT (msvcr80.dll and msvcp80.dll) if you are using dynamic CRT DLLs instead of static in your project settings.
If you change to static libraries in your project settings then you do not need those either.
To change to use the static libraries, just go under:
Project - Properties - Configuration Properties - C/C++ - Code Generation
and for release settings change from:
Multi-threaded DLL (/MD)
to:
Multi-threaded (/MT)
and for debug settings change from:
Multi-threaded Debug DLL (/MDd)
to:
Multi-threaded Debug (/MTd)
Michael Tallhamer
Hi, visuallll
Ted has written the detailed instructions to install the private assembly, you can search the forum for it. You can also refer to the following article (see the part "Alternatives to deployment->Install a private assembly")
http://www.codeproject.com/useritems/vcredists_x86.asp
Prerak
We have known for a long time with Visual 6 that it was not safe to link a DLL with the static
version of the CRT (/MT).
Now maybe things have changed and it is possible with Visual 2005 to safely link a DLL with /MT like a .EXE
Anaheim
Would it be possible to do the same thing for a simple DLL that does not use any managed CLI
A DLL is not supposed to link with the static version of the C library, so if you use Visual 2005,
your DLL will depend on the MSVCR80.DLL. However, it is not possible to use this DLL
without the whole CLI stuff, which requires installation of the .NET Framework 2.0 on any PC.
I have done several testing but when a DLL is compiled with Visual 2005, it depends on MSVCR80.DLL and it is not possible to just copy this DLL on the target platform
(error R6034 : "an application has made an attempt to load the C runtime library incorrectly"). The only solution that works is to use a .manifest and then install the whole .Net framework 2.0 on the target PC.
who has an idea about how to avoid this
Raviraj_bh
this shows the way I should go
Trying to do this opens another problem.
But if you do not use the full Framework system you have to distribute the same version of
MSVCR80 and the version of MSVCR80 in the manifest of the product that you distribute.
Now trying to do this with Visual C++ 2005 Express, the version of MSVCR80.DLL that ships with the Framework 2.0 installed by Visual 2005 Express is 8.0.50727 and the Linker of Visual 2005 Express generates a manifest that depends on 8.0.50608.
If the loader sees different versions in a private distribution, it will not start on a system without the .NET Framework 2
A dirty solution is to edit the Manifest to have the versions match (but still using real different version with potential bugs as you could get in the old days of the DLL mess).
How is it possible to change the settings of Visual C++ 2005 Express so that we depend on a specific version of the MSVCR80 that we have (or where could we find the correct DLL to distribute)
thank you again
best regards