Author: jpobst
Date: 2006-11-26 13:31:15 -0500 (Sun, 26 Nov 2006)
New Revision: 68482
Added:
trunk/moma/ChangeLog
Modified:
trunk/moma/MainForm.cs
trunk/moma/MoMA.Analyzer/AssemblyAnalyzer.cs
trunk/moma/MoMA.Analyzer/MethodExtractor.cs
trunk/moma/MoMA.csproj
trunk/moma/TODO
trunk/moma/Web References/MoMAWebServices/MoMASubmit.disco
trunk/moma/Web References/MoMAWebServices/MoMASubmit.wsdl
trunk/moma/Web References/MoMAWebServices/Reference.cs
trunk/moma/Web References/MoMAWebServices/Reference.map
Log:
11-26-2006 Jonathan Pobst <[EMAIL PROTECTED]>
* Extract missing constructors. This will allow missing types
to show up as missing ctor's.
* Scan user's code in constructors.
* Added scanning the following opcodes: calli, ldftn, ldvirtftn, newobj.
* Updated web reference to http://www.go-mono.com/moma/MoMASubmit.asmx.
* Remove invalid assemblies from the assembly list.
Added: trunk/moma/ChangeLog
===================================================================
--- trunk/moma/ChangeLog 2006-11-26 16:59:20 UTC (rev 68481)
+++ trunk/moma/ChangeLog 2006-11-26 18:31:15 UTC (rev 68482)
@@ -0,0 +1,12 @@
+11-26-2006 Jonathan Pobst <[EMAIL PROTECTED]>
+
+ * Extract missing constructors. This will allow missing types
+ to show up as missing ctor's.
+ * Scan user's code in constructors.
+ * Added scanning the following opcodes: calli, ldftn, ldvirtftn, newobj.
+ * Updated web reference to http://www.go-mono.com/moma/MoMASubmit.asmx.
+ * Remove invalid assemblies from the assembly list.
+
+11-22-2006 Jonathan Pobst <[EMAIL PROTECTED]>
+
+ * Initial import.
\ No newline at end of file
Modified: trunk/moma/MainForm.cs
===================================================================
--- trunk/moma/MainForm.cs 2006-11-26 16:59:20 UTC (rev 68481)
+++ trunk/moma/MainForm.cs 2006-11-26 18:31:15 UTC (rev 68482)
@@ -100,6 +100,7 @@
SetupForm (WizardStep.ChooseAssemblies);
break;
case WizardStep.ChooseAssemblies:
+ VerifyValidAssemblies ();
if (AssemblyListView.Items.Count == 0)
{
MessageBox.Show ("Please choose
at least one assembly to analyze.");
@@ -188,6 +189,9 @@
aa.ScanAssemblyForPInvokes ((string)lvi.Tag);
// Start the results reports
+ if (!Directory.Exists (Path.Combine
(Path.GetDirectoryName (Application.ExecutablePath), "Reports")))
+ Directory.CreateDirectory (Path.Combine
(Path.GetDirectoryName (Application.ExecutablePath), "Reports"));
+
string output_path = Path.Combine
(Path.GetDirectoryName (Application.ExecutablePath), "Reports");
XhtmlTextWriter report = aa.BeginHtmlReport (new
FileStream (Path.Combine (output_path, "output.html"), FileMode.Create));
StreamWriter submit_report = aa.BeginTextReport (new
FileStream (Path.Combine (output_path, "submit.txt"), FileMode.Create));
@@ -303,5 +307,25 @@
else
MessageBox.Show ("Result submission failed.
Please try again later.");
}
+
+ private void VerifyValidAssemblies ()
+ {
+ List<ListViewItem> invalid_assemblies = new
List<ListViewItem> ();
+
+ foreach (ListViewItem lvi in AssemblyListView.Items)
+ if (!AssemblyAnalyzer.IsValidAssembly
((string)lvi.Tag))
+ invalid_assemblies.Add (lvi);
+
+ string msg = "The following are not valid .Net
assemblies and will not be scanned:\n";
+
+ foreach (ListViewItem lvi in invalid_assemblies)
+ {
+ msg += string.Format ("{0}\n", lvi.Text);
+ AssemblyListView.Items.Remove (lvi);
+ }
+
+ if (invalid_assemblies.Count > 0)
+ MessageBox.Show (msg);
+ }
}
}
\ No newline at end of file
Modified: trunk/moma/MoMA.Analyzer/AssemblyAnalyzer.cs
===================================================================
--- trunk/moma/MoMA.Analyzer/AssemblyAnalyzer.cs 2006-11-26 16:59:20 UTC
(rev 68481)
+++ trunk/moma/MoMA.Analyzer/AssemblyAnalyzer.cs 2006-11-26 18:31:15 UTC
(rev 68482)
@@ -87,10 +87,11 @@
foreach (TypeDefinition type in ad.MainModule.Types) {
if (type.Name != "<Module>") {
+ // Check every method for calls that
match our issues lists
foreach (MethodDefinition method in
type.Methods) {
if (method.Body != null) {
foreach (Instruction i
in method.Body.Instructions) {
- if (i.OpCode ==
OpCodes.Call || i.OpCode == OpCodes.Callvirt) {
+ if (i.OpCode ==
OpCodes.Call || i.OpCode == OpCodes.Callvirt || i.OpCode == OpCodes.Calli ||
i.OpCode == OpCodes.Ldftn || i.OpCode == OpCodes.Ldvirtftn || i.OpCode ==
OpCodes.Newobj) {
Method
match;
if
(mono_todo != null && mono_todo.Matches (i.Operand.ToString (), out match))
@@ -108,6 +109,29 @@
}
}
}
+
+ // Check every constructor for calls
that match our issues lists
+ foreach (MethodDefinition method in
type.Constructors) {
+ if (method.Body != null) {
+ foreach (Instruction i
in method.Body.Instructions) {
+ if (i.OpCode ==
OpCodes.Call || i.OpCode == OpCodes.Callvirt || i.OpCode == OpCodes.Calli ||
i.OpCode == OpCodes.Ldftn || i.OpCode == OpCodes.Ldvirtftn || i.OpCode ==
OpCodes.Newobj) {
+ Method
match;
+
+ if
(mono_todo != null && mono_todo.Matches (i.Operand.ToString (), out match))
+
mono_todo_results.Add (new MonoTodoError (new Method (method.ToString ()),
match));
+
+ if
(not_implemented != null && not_implemented.Matches (i.Operand.ToString (), out
match))
+
not_implemented_results.Add (new NotImplementedExceptionError (new Method
(method.ToString ()), match));
+
+ if
(pinvoke.Matches (i.Operand.ToString (), out match))
+
pinvoke_results.Add (new PInvokeError (new Method (method.ToString ()), match));
+
+ if
(missing.Matches (i.Operand.ToString (), out match))
+
missing_results.Add (new MissingMethodError (new Method (method.ToString ()),
match));
+ }
+ }
+ }
+ }
}
}
}
@@ -274,5 +298,16 @@
writer.WriteEndTag ("style");
}
+
+ public static bool IsValidAssembly (string assembly)
+ {
+ try {
+ AssemblyFactory.GetAssembly (assembly);
+ return true;
+ }
+ catch (Mono.Cecil.Binary.ImageFormatException ex) {
+ return false;
+ }
+ }
}
}
Modified: trunk/moma/MoMA.Analyzer/MethodExtractor.cs
===================================================================
--- trunk/moma/MoMA.Analyzer/MethodExtractor.cs 2006-11-26 16:59:20 UTC (rev
68481)
+++ trunk/moma/MoMA.Analyzer/MethodExtractor.cs 2006-11-26 18:31:15 UTC (rev
68482)
@@ -41,6 +41,31 @@
if (i.Previous.Operand != null && i.Previous.Operand.ToString ().StartsWith
("System.Void System.NotImplementedException"))
throwsNotImplementedMethods[method.ToString ()] = new Method
(method.ToString ());
}
+
+ //Gets all constructors of the current
type
+ foreach (MethodDefinition method in
type.Constructors) {
+ // We only want Public and
Protected methods
+ if ((method.Attributes &
MethodAttributes.Family) == 0 && (method.Attributes & MethodAttributes.Public)
== 0)
+ continue;
+
+ // If adding all methods, add
this method
+ if (allMethods != null)
+
allMethods[method.ToString ()] = new Method (method.ToString ());
+
+ // If adding MonoTODO methods,
check this method
+ if (monoTodoMethods != null)
+ foreach
(CustomAttribute ca in method.CustomAttributes)
+ if
(ca.Constructor.DeclaringType.ToString () == "System.MonoTODOAttribute")
+
monoTodoMethods[method.ToString ()] = new Method (method.ToString (),
ca.ConstructorParameters.Count > 0 ? ca.ConstructorParameters[0].ToString () :
string.Empty);
+
+ // If adding methods that throw
NotImplementedException, look for those
+ if (throwsNotImplementedMethods
!= null && method.Body != null)
+ foreach (Instruction i
in method.Body.Instructions)
+ if (i.OpCode ==
OpCodes.Throw)
+ if
(i.Previous.Operand != null && i.Previous.Operand.ToString ().StartsWith
("System.Void System.NotImplementedException"))
+
throwsNotImplementedMethods[method.ToString ()] = new Method (method.ToString
());
+ }
+
}
}
}
Modified: trunk/moma/MoMA.csproj
===================================================================
--- trunk/moma/MoMA.csproj 2006-11-26 16:59:20 UTC (rev 68481)
+++ trunk/moma/MoMA.csproj 2006-11-26 18:31:15 UTC (rev 68482)
@@ -29,6 +29,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
+ <Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Web" />
@@ -95,10 +96,10 @@
<WebReferences Include="Web References\" />
</ItemGroup>
<ItemGroup>
- <WebReferenceUrl Include="http://jpobst.com/moma/MoMASubmit.asmx">
+ <WebReferenceUrl Include="http://www.go-mono.com/moma/MoMASubmit.asmx">
<UrlBehavior>Static</UrlBehavior>
<RelPath>Web References\MoMAWebServices\</RelPath>
- <UpdateFromURL>http://jpobst.com/moma/MoMASubmit.asmx</UpdateFromURL>
+
<UpdateFromURL>http://www.go-mono.com/moma/MoMASubmit.asmx</UpdateFromURL>
<ServiceLocationURL>
</ServiceLocationURL>
<CachedDynamicPropName>
Modified: trunk/moma/TODO
===================================================================
--- trunk/moma/TODO 2006-11-26 16:59:20 UTC (rev 68481)
+++ trunk/moma/TODO 2006-11-26 18:31:15 UTC (rev 68482)
@@ -20,4 +20,7 @@
- The submission web services is dead simple. It drops the results
unchanged into a directory. We either need a backend process to make
- these usable, or to do more work in the web service.
\ No newline at end of file
+ these usable, or to do more work in the web service. A list files and
+ retrieve files would be handy.
+
+- We do not currently handle MonoTODO's list on types, only methods.
\ No newline at end of file
Modified: trunk/moma/Web References/MoMAWebServices/MoMASubmit.disco
===================================================================
--- trunk/moma/Web References/MoMAWebServices/MoMASubmit.disco 2006-11-26
16:59:20 UTC (rev 68481)
+++ trunk/moma/Web References/MoMAWebServices/MoMASubmit.disco 2006-11-26
18:31:15 UTC (rev 68482)
@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/disco/">
- <contractRef ref="http://jpobst.com/pobst/moma/MoMASubmit.asmx?wsdl"
docRef="http://jpobst.com/pobst/moma/MoMASubmit.asmx"
xmlns="http://schemas.xmlsoap.org/disco/scl/" />
- <soap address="http://jpobst.com/pobst/moma/MoMASubmit.asmx"
xmlns:q1="http://mono-project.com/MoMASubmit/" binding="q1:MoMASubmitSoap"
xmlns="http://schemas.xmlsoap.org/disco/soap/" />
- <soap address="http://jpobst.com/pobst/moma/MoMASubmit.asmx"
xmlns:q2="http://mono-project.com/MoMASubmit/" binding="q2:MoMASubmitSoap12"
xmlns="http://schemas.xmlsoap.org/disco/soap/" />
+ <contractRef ref="http://www.go-mono.com/moma/MoMASubmit.asmx?wsdl"
docRef="http://www.go-mono.com/moma/MoMASubmit.asmx"
xmlns="http://schemas.xmlsoap.org/disco/scl/" />
</discovery>
\ No newline at end of file
Modified: trunk/moma/Web References/MoMAWebServices/MoMASubmit.wsdl
===================================================================
--- trunk/moma/Web References/MoMAWebServices/MoMASubmit.wsdl 2006-11-26
16:59:20 UTC (rev 68481)
+++ trunk/moma/Web References/MoMAWebServices/MoMASubmit.wsdl 2006-11-26
18:31:15 UTC (rev 68482)
@@ -1,65 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://mono-project.com/MoMASubmit/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://mono-project.com/MoMASubmit/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified"
targetNamespace="http://mono-project.com/MoMASubmit/">
- <s:element name="SubmitResults">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="results"
type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="SubmitResultsResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="1" maxOccurs="1" name="SubmitResultsResult"
type="s:boolean" />
- </s:sequence>
- </s:complexType>
- </s:element>
+<definitions xmlns:s0="http://mono-project.com/MoMASubmit/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" name="MoMASubmit"
targetNamespace="http://mono-project.com/MoMASubmit/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <s:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://mono-project.com/MoMASubmit/">
+ <xs:element name="SubmitResults">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="results"
type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SubmitResultsResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="SubmitResultsResult"
type="xs:boolean" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="boolean" type="xs:boolean" />
</s:schema>
- </wsdl:types>
- <wsdl:message name="SubmitResultsSoapIn">
- <wsdl:part name="parameters" element="tns:SubmitResults" />
- </wsdl:message>
- <wsdl:message name="SubmitResultsSoapOut">
- <wsdl:part name="parameters" element="tns:SubmitResultsResponse" />
- </wsdl:message>
- <wsdl:portType name="MoMASubmitSoap">
- <wsdl:operation name="SubmitResults">
- <wsdl:input message="tns:SubmitResultsSoapIn" />
- <wsdl:output message="tns:SubmitResultsSoapOut" />
- </wsdl:operation>
- </wsdl:portType>
- <wsdl:binding name="MoMASubmitSoap" type="tns:MoMASubmitSoap">
+ </types>
+ <message name="SubmitResultsSoapIn">
+ <part name="parameters" element="s0:SubmitResults" />
+ </message>
+ <message name="SubmitResultsSoapOut">
+ <part name="parameters" element="s0:SubmitResultsResponse" />
+ </message>
+ <message name="SubmitResultsHttpGetIn">
+ <part name="results" type="s:string" />
+ </message>
+ <message name="SubmitResultsHttpGetOut">
+ <part name="Body" element="s0:boolean" />
+ </message>
+ <message name="SubmitResultsHttpPostIn">
+ <part name="results" type="s:string" />
+ </message>
+ <message name="SubmitResultsHttpPostOut">
+ <part name="Body" element="s0:boolean" />
+ </message>
+ <portType name="MoMASubmitSoap">
+ <operation name="SubmitResults">
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <input message="s0:SubmitResultsSoapIn" />
+ <output message="s0:SubmitResultsSoapOut" />
+ </operation>
+ </portType>
+ <portType name="MoMASubmitHttpGet">
+ <operation name="SubmitResults">
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <input message="s0:SubmitResultsHttpGetIn" />
+ <output message="s0:SubmitResultsHttpGetOut" />
+ </operation>
+ </portType>
+ <portType name="MoMASubmitHttpPost">
+ <operation name="SubmitResults">
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <input message="s0:SubmitResultsHttpPostIn" />
+ <output message="s0:SubmitResultsHttpPostOut" />
+ </operation>
+ </portType>
+ <binding name="MoMASubmitSoap" type="s0:MoMASubmitSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="SubmitResults">
+ <operation name="SubmitResults">
<soap:operation
soapAction="http://mono-project.com/MoMASubmit/SubmitResults" style="document"
/>
- <wsdl:input>
+ <input>
<soap:body use="literal" />
- </wsdl:input>
- <wsdl:output>
+ </input>
+ <output>
<soap:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:binding name="MoMASubmitSoap12" type="tns:MoMASubmitSoap">
- <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="SubmitResults">
- <soap12:operation
soapAction="http://mono-project.com/MoMASubmit/SubmitResults" style="document"
/>
- <wsdl:input>
- <soap12:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap12:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:service name="MoMASubmit">
- <wsdl:port name="MoMASubmitSoap" binding="tns:MoMASubmitSoap">
- <soap:address location="http://jpobst.com/pobst/moma/MoMASubmit.asmx" />
- </wsdl:port>
- <wsdl:port name="MoMASubmitSoap12" binding="tns:MoMASubmitSoap12">
- <soap12:address location="http://jpobst.com/pobst/moma/MoMASubmit.asmx"
/>
- </wsdl:port>
- </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+ </output>
+ </operation>
+ </binding>
+ <binding name="MoMASubmitHttpGet" type="s0:MoMASubmitHttpGet">
+ <http:binding verb="GET" />
+ <operation name="SubmitResults">
+ <http:operation location="/SubmitResults" />
+ <input>
+ <http:urlEncoded />
+ </input>
+ <output>
+ <mime:mimeXml part="Body" />
+ </output>
+ </operation>
+ </binding>
+ <binding name="MoMASubmitHttpPost" type="s0:MoMASubmitHttpPost">
+ <http:binding verb="POST" />
+ <operation name="SubmitResults">
+ <http:operation location="/SubmitResults" />
+ <input>
+ <mime:content type="application/x-www-form-urlencoded" />
+ </input>
+ <output>
+ <mime:mimeXml part="Body" />
+ </output>
+ </operation>
+ </binding>
+ <service name="MoMASubmit">
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ </wsdl:documentation>
+ <port name="MoMASubmitSoap" binding="s0:MoMASubmitSoap">
+ <soap:address location="http://www.go-mono.com/moma/MoMASubmit.asmx" />
+ </port>
+ <port name="MoMASubmitHttpGet" binding="s0:MoMASubmitHttpGet">
+ <http:address location="http://www.go-mono.com/moma/MoMASubmit.asmx" />
+ </port>
+ <port name="MoMASubmitHttpPost" binding="s0:MoMASubmitHttpPost">
+ <http:address location="http://www.go-mono.com/moma/MoMASubmit.asmx" />
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Modified: trunk/moma/Web References/MoMAWebServices/Reference.cs
===================================================================
--- trunk/moma/Web References/MoMAWebServices/Reference.cs 2006-11-26
16:59:20 UTC (rev 68481)
+++ trunk/moma/Web References/MoMAWebServices/Reference.cs 2006-11-26
18:31:15 UTC (rev 68482)
@@ -35,7 +35,7 @@
/// <remarks/>
public MoMASubmit() {
- this.Url = "http://jpobst.com/pobst/moma/MoMASubmit.asmx";
+ this.Url = "http://www.go-mono.com/moma/MoMASubmit.asmx";
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
Modified: trunk/moma/Web References/MoMAWebServices/Reference.map
===================================================================
--- trunk/moma/Web References/MoMAWebServices/Reference.map 2006-11-26
16:59:20 UTC (rev 68481)
+++ trunk/moma/Web References/MoMAWebServices/Reference.map 2006-11-26
18:31:15 UTC (rev 68482)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DiscoveryClientResultsFile
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Results>
- <DiscoveryClientResult
referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference"
url="http://jpobst.com/pobst/moma/MoMASubmit.asmx?disco"
filename="MoMASubmit.disco" />
- <DiscoveryClientResult
referenceType="System.Web.Services.Discovery.ContractReference"
url="http://jpobst.com/pobst/moma/MoMASubmit.asmx?wsdl"
filename="MoMASubmit.wsdl" />
+ <DiscoveryClientResult
referenceType="System.Web.Services.Discovery.ContractReference"
url="http://www.go-mono.com/moma/MoMASubmit.asmx?wsdl"
filename="MoMASubmit.wsdl" />
+ <DiscoveryClientResult
referenceType="System.Web.Services.Discovery.DiscoveryDocumentReference"
url="http://www.go-mono.com/moma/MoMASubmit.asmx?disco"
filename="MoMASubmit.disco" />
</Results>
</DiscoveryClientResultsFile>
\ No newline at end of file
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches