I\'m fairly new to C#, and am having a problem when loading a library into my program. Im trying to run this example in visual studio, but I am getting an error:
<
EDIT: Okay, due to your answer, I've now managed to reproduce the problem without SVM. Basically, you shouldn't have two assemblies with the same name, one in a .exe and one in a .dll. Here's an example:
Library.cs:
public class Library
{
public static void Foo()
{
System.Console.WriteLine("Library.Foo");
}
}
Test.cs:
public class Test
{
static void Main(string[] args)
{
Library.Foo();
}
}
Compile:
> csc /target:library /out:Test.dll Library.cs
> csc /r:Test.dll Test.cs
Run:
> test.exe
Unhandled Exception: System.TypeLoadException: Could not load type 'Library' from
assembly 'Test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.+
at Test.Main(String[] args)
It's already loaded an assembly called Test
from Test.exe... so it's not going to also look for Test.dll.
I wanted to add this as a comment (but not high enough rep yet) - I had this exact issue and found @JonSkeet answer really useful, between myself and a colleague we stumbled on the answer;
https://stackoverflow.com/a/13236893/692942.
Basically my project assembly which generated an EXE file was named the same as a referenced assembly I built as a class library. The combination of the EXE and DLL in the build directory cause the error to be thrown as only one assembly of that name could be loaded.