I created a dll with VB .NET Class Library Project Type. The DLL will show one dialog window when client program calls its function. I used regasm executable to register my DLL in the target PC. But the DLL didn't work. I have to compile the dll in the target PC, then it works. It's ridiculous to recompile the dll in the target PC before using the dll. Even in my PC sometimes it works and sometimes not.
It sounds like you are running into 'versioning' problems with .NET. First of all, to register your assembly in the Global Assembly Cache (GAC) you have to sign your assembly with a strong name. Your applications that use that assembly then reference the assembly.
The problem comes in if you do not specifically designate the version of your assembly. Look in the AssemblyInfo.vb, most specifically at the AssemblyVersion attribute. If this is set to something like "1.0.*", that will direct the compiler to update the version number each time you compile.
Change the version to a specific number, like "1.0.0.1" and leave out the '*'. Even if you have a strongly named assembly with the same key, it will not work with other applications that have been compiled against a different version, which is changing every time you compile!