[Mono-bugs] [Bug 33892][Wis] New - Add module support to mcs

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
13 Nov 2002 16:26:28 -0000

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by danmorg@sc.rr.com.


--- shadow/33892	Wed Nov 13 11:26:28 2002
+++ shadow/33892.tmp.26199	Wed Nov 13 11:26:28 2002
@@ -0,0 +1,56 @@
+Bug#: 33892
+Product: Mono/MCS
+Version: unspecified
+OS Details: 
+Status: NEW   
+Priority: Wishlist
+Component: Misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: danmorg@sc.rr.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+Summary: Add module support to mcs
+Assemblies can consist of one or more files.  By default they're only
+one file (a .dll or .exe), but they can consist of additional files
+(image files, glade xml files, and, here's the important part,
+additional CIL code).
+A module *is not* an assembly, but it can be part of one, allowing you
+to have multi-file assemblies.  See:
+This allows you to do:
+	# create shared.netmodule
+	csc /t:module shared.cs
+	# create app.exe which uses b.netmodule
+	csc /t:exe /addmodule:shared.netmodule app.cs
+	# other apps can also use the same .netmodule
+	csc /t:exe /addmodule:shared.netmodule another-app.cs
+You still have multiple files, *but* since the Assembly (and not an
+arbitrary file) is the unit of type scoping, this allows the contents of
+`shared.netmodule' to be all be marked as `internal', yet `app.cs' can
+still use those types.
+This allows you to share internal code between assemblies without making
+it public.
+For more information, see ECMA Standard 335, Partition 2, Section 6.
+As for mcs, I can see this as being very useful.  Multi-file assemblies
+are allowed, mono runs them, but mcs can't create them.  At least, the
+build I have -- almost a month old -- can't create .netmodule files.  If
+you specify `/t:module' to csc, it creates a .dll with a .assembly
+directive, which a .netmodule file lacks.  The .assembly directive is
+what marks a file as an assembly.