471,349 Members | 1,768 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,349 software developers and data experts.

Compile code at runtime & Add Reference & FileNotFoundException

I have a text file which contains VB.NET code. The VB.NET code is actually a
Class that can contain code, which simply displays a message box or does
something more complicated (i.e Excel/Word Automation, communicate with the
DB and/or WebServices, talk to other classes). To achieve a complicated task,
this class would need reference to other custom assemblies (not part of .net
framework) that are possibly not installed to the GAC.

In my application, I use the System.CodeDom.Compiler.ICodeCompiler's
CompileAssemblyFromSource method to compile the text file code into an
assembly. Before the new assembly is created, I use the
ReferencedAssemblies.Add method to add reference to all the DLL files needed
by it. The ReferencedAssemblies.Add method is given the full path to a DLL
file, but the full path is a directory other than the main application's App
Direcotry(=where the Main.Exe is run from). For assemblies that are in the
GAC (such as System.dll and System.Windows.Forms.dll) this works fine; the
text file source code compiles without errors and I can call its methods,
etc. When adding reference, a full path is also specified for custom dll
files, but I get an FileNotFoundException. If I place the Custom Dll files
int the App Directory I do not get an exception and the source code compiles,
but this is not a feasible option.

I've tried setting the CompilerOptions parameter to the full path from
above, but that directory is not even probed. The property is set as follows:
cpCompilerParameters.CompilerOptions = "/lib:D:\Reports\CustomFiles\". Is
this the correct way of doing it?

Are there any other mechanisms by which I can tell the Main application
where to probe for these custom dlls?

Thanks for your help.
Jul 21 '05 #1
1 2799

I'm also using the CodeDOM namespace and perform runtime compilations.
I ran into this exact same problem, only my DLLs were placed in the
same folder as the executable, but it still failed. What I did was to
get the full path of the executing assembly and concatenate it to the
dll name. This solved the problem.

I know that you've written that this is not an option (placing the DLLs
in the same folder as the executable), but I've listed it anyway to
share with you the information that at least a full path is supposed to
work (worked for me...).

BTW: I have not set the compiler options at all in order to achieve
this effect, as you demonstrated.

I'd check the Compiler Errors collection, if you haven't already done
so. Maybe you'll find somehow the actual path it _is_ looking for, and
then you'll figure out what your problem is.

One more thing - is it possible that you're placing the DLLs on a
mapped network drive or something like that ? Did you try placing the
DLLs in an actual local hard drive directory ?

Another advice - you mentioned that if the DLLs are placed in the
executable's folder, it compiles ok. Try placing it there, but specify
the full path name anyway - is it still working ?

Jul 21 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by John Doe | last post: by
4 posts views Thread by Lowell | last post: by
7 posts views Thread by wei8010 | last post: by
16 posts views Thread by desktop | last post: by
3 posts views Thread by Jennifer | last post: by
18 posts views Thread by Verde | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.