[Mono-list] How do i tell Mono (for ASP.NET, C#) where to find MySQL.Data.MySqlClient
P.Bradley at dsl.pipex.com
Mon Oct 23 14:17:06 EDT 2006
Ysgrifennodd Dick Steflik:
> Thanks for butting in; answering your questions:
> First: I think the GAC is kinda like the Windows registry in that it
> allows me to make use of Windows dynamic link libraries that haven't
> been written to us windows specific APIs
Well, not really. The GAC is a physical file locations holding physical
directories and physical files. Assemblies are stored in the GAC, an
operation that you carry out using the gacutil tool.
> Second: Focusing only on ASP.NET it searches for a referenced assembly
> in web.config then in the application /bin director or vice versa; or
> is there somthing else happening?.
Again, not really. If I understand things correctly, when the runtime
searches for a referenced assembly it first looks in the GAC and then in
the same directory as the assembly it's executing. The Web.config entry
simply tells it the name of the assembly it needs to look for. I may be
less than 100% accurate on this; but someone will correct me if I'm wrong.
> Third: this is pretty vague to me
Giving an assembly a strong name means blessing it with a public and
private key. You use the tool called sn.exe to do this. If you do sn
-h sn, you get this output:
peter at linux:~> sn -h sn
Mono StrongName - version 188.8.131.52
StrongName utility for signing assemblies
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2005 Novell. BSD
Usage: sn [-q | -quiet] options [parameters]
-q | -quiet Quiet mode (minimal display)
StrongName signing options
-D assembly1 assembly2
Compare assembly1 and assembly2 (without signatures)
Create a new keypair in the specified file
-R assembly keypair.snk
Resign the assembly with the specified StrongName key file
-Rc assembly container
Resign the assembly with the specified CSP container
Show the public key from the specified file
Show the public key and pk token from the specified file
Show the public key from the specified assembly
Show the public key and pk token from the specified assembly
Verify the specified assembly signature
Verify the specified assembly signature (even if disabled).
<1> Currently not implemented in the tool
peter at linux:~>
To give an assembly a strong name you first need to create your key pair
(sn -k <filename>). Keep your private key safe somewhere.
In your project, edit AssemblyInfo.cs. Give your version a fixed
version number (no * in it), and point to your keypair file (the one you
just created). Something like this:
Now recompile. This will compile your assembly with a strong name. You
can't put anything in the GAC until it has a strong name.
Finally, use gacutil as outlined by Robert to put your assembly in the
GAC, and alter Web.config to look for the strongly named assembly.
> When I look in the GAC using gacutil I can see everything that has
> been registered but I don't see anything that says where the
> assemblies are physically located.
Are you on linux? On my SuSE box, the GAC is at /usr/lib/mono/gac.
Each assembly has a directory. Under that each version of the assembly
has a directory. The assemblies themselves along with any configuration
files are in these directories.
HTH. And I hope anyone more expert than me will correct any errors,
ambiguities or over-simplifications.
More information about the Mono-list