[Mono-devel-list] POP3/SMTP component, LicenseManager.Validate()

Jonathan Pryor jonpryor at vt.edu
Sat Jan 31 17:02:35 EST 2004


The class libraries are in the "mcs" CVS repository, inside the "class"
directory.  This directory is organized as:

	[assembly-name]/[namespace-name]/[class-name]

The [assembly-name] directory is the name of an assembly: (1) without
the .dll extension; (2) possibly with a different casing (the System.XML
directory generates System.Xml.dll); and (3) possibly with a (slightly)
different name (the corlib directory now creates mscorlib.dll).

The [assembly-name] directory also contains a Makefile which will
generate the assembly, and *only* that assembly.  The Makefile in the
"class" directory will create *all* assemblies.

The [namespace-name] directory is a "flat" list of directories.  This
isn't Java, where the org.foo.bar package requires the directory tree
org/foo/bar; instead, mcs would have a org.foo.bar directory.  For
example, class/corlib has the directories System, System.Collections,
System.IO, and System.Text.  These are all sibling directories.

Finally, [class-name] is a file that implements the [class-name] class. 
There is no requirement that public classes actually be in a file of the
same name, but it is our convention.  (It's not always followed, so grep
is your friend.)

With that overview, the answer to your questions are simple:

You need to edit the file <cvs
repository="mcs"/>/class/System/System.ComponentModel/LicenseManager.cs.

Once you're done editing that file, run "make" from within the
class/System directory.  This will place System.dll into the class/lib
directory.  Once built, you can either manually copy System.dll into
your install location, or run "make install" from the top-level
directory.

I have no idea if using some other library is better than using
LicenseManager.  However, I'm sure that other groups will need
LicenseManager implemented at some point, so if you implement it for
your code, you will likely be helping other groups out.

 - Jon

On Thu, 2004-01-29 at 17:51, Mathew Weaver wrote:
> I am just starting to learn Mono.  I have Mono (v0.29) running on
> RedHat9 (I'm have only limited experience with Linux).  I have download
> the source from AnonCVS.
> 
> I have am trying to evaulate a third-party component in my .NET
> application to see if it will work on Mono.  I compile and run on
> Windows (.NET Framework, not Mono) and it works fine.  I copy my *.exe
> and the third-party app onto my RedHat9 machine and run the app with
> Mono.  I get an NotImplementedException for
> System.ComponentModel.LicenseManager.Validate(System.Type).  I checked
> the class status pages on the Mono site - and sure enough, that method
> has not been implemented.  
> 
> For testing purposes, I would like to try and change that method so it
> doesn't through the exception.  I've looked through the Mono CVS source
> and its unclear (to me) where the source is for that particular
> component.  I also don't know how to compile just that one component -
> or if I must recompile everything for that one change.  I'm not too
> familiar with the Mono library paths - so I'm not sure where it finds
> the components to use at run-time.
> 
> The third-party component I am evaluating is used for receiving POP3
> email and sending authenticated SMTP email.  I read somewhere about some
> additional Mono classes that may provide similar functionality.  Would
> that be a better approach (as opposed to changing LicenseManager.cs)?  
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list




More information about the Mono-devel-list mailing list