Have you tried using the newer dynamic stuff to do your COM interop calls?<div><br></div><div><a href="http://www.codeproject.com/Tips/143694/Get-rid-of-COM-Interop-DLL-by-using-the-new-C-4-dy">http://www.codeproject.com/Tips/143694/Get-rid-of-COM-Interop-DLL-by-using-the-new-C-4-dy</a><br>
</div><div><a href="http://msdn.microsoft.com/en-us/magazine/ff714583.aspx">http://msdn.microsoft.com/en-us/magazine/ff714583.aspx</a><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Nov 14, 2012 at 4:27 AM, Peter Dillinger <span dir="ltr"><<a href="mailto:pcd768@gmail.com" target="_blank">pcd768@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">(This message was not accepted from my work email and or from the<br>
forum interface.  Trying personal email...)<br>
<br>
In investigating the ability to drop in mcs as a replacement for csc<br>
(currently trying out mono 2.11.4), I've run into issues in compiling<br>
things from some Microsoft C# 4.0 code samples that involve COM<br>
interop.  Here's a simplified example:<br>
<br>
public class Program<br>
{<br>
    public static void Test(Microsoft.Office.Interop.Excel.Application xl)<br>
    {<br>
        xl.Columns[2].AutoFit();<br>
    }<br>
    public static void Test2(Microsoft.Office.Interop.Excel.Range r)<br>
    {<br>
        r.Value = 42;<br>
    }<br>
}<br>
<br>
Compiling this with csc requires -link (aka /link), as seen here:<br>
<br>
$ cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\<br>
10.0/Visual\ Studio\ Tools\ for\<br>
Office/PIA/Office12/Microsoft.Office.Interop.Excel.dll .<br>
$ /cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe -target:library<br>
  -link:Microsoft.Office.Interop.Excel.dll Program.cs<br>
Microsoft (R) Visual C# Compiler version 4.0.30319.17929<br>
for Microsoft (R) .NET Framework 4.5<br>
Copyright (C) Microsoft Corporation. All rights reserved.<br>
$ /cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe -target:library<br>
  -r:Microsoft.Office.Interop.Excel.dll Program.cs<br>
Microsoft (R) Visual C# Compiler version 4.0.30319.17929<br>
for Microsoft (R) .NET Framework 4.5<br>
Copyright (C) Microsoft Corporation. All rights reserved.<br>
<br>
Program.cs(5,23): error CS1061: 'object' does not contain a definition<br>
for 'AutoFit' and no extension method 'AutoFit' accepting a first<br>
argument of type 'object' could be found (are you missing a using<br>
directive or an assembly reference?)<br>
$<br>
<br>
So trying to compile this with mcs, it seems the closest we can come<br>
to -link is to replace with -r, so we would expect it to fail<br>
similarly to mcs above, which it does for 'Test' but 'Test2' has other<br>
problems:<br>
<br>
$ /cygdrive/c/Program\ Files\ \(x86\)/Mono-2.11.4/bin/mcs.bat -target:library<br>
  -r:Microsoft.Office.Interop.Excel.dll Program.cs<br>
Program.cs(5,23): error CS1061: Type `object' does not contain a<br>
definition for `AutoFit' and no extension method `AutoFit' of type<br>
`object' could be found. Are you missing an assembly reference?<br>
C:\PROGRA~2\MONO-2~1.4\lib\mono\4.5\mscorlib.dll (Location of the<br>
symbol related to previous error)<br>
Program.cs(9,11): error CS1546: Property or event<br>
`Microsoft.Office.Interop.Excel.Range.Value' is not supported by the<br>
C# language<br>
D:\scalability-csharp\test-cs4codesamples-orig\samples\This sample<br>
shows how to use the\C#\Microsoft.Office.Interop.Excel.dll (Location<br>
of the symbol related to previous error)<br>
Program.cs(9,11): error CS0200: Property or indexer<br>
`Microsoft.Office.Interop.Excel.Range.Value' cannot be assigned to (it<br>
is read-only)<br>
Compilation failed: 3 error(s), 0 warnings<br>
$<br>
<br>
This leads me to two questions:<br>
<br>
(1) Is there any plan to support an equivalent of csc -link (aka<br>
/link)?  Or is there some other work-around I don't know about?<br>
<br>
(2) It appears that the "is not supported by the C# language"+"cannot<br>
be assigned to" issue a bug.  Is that correct?  (If so, I can file<br>
it.)<br>
<br>
And a bonus question:<br>
<br>
(3) For general C# language issues where csc willingly compiles<br>
something that is arguably not adherent to the language spec, but mcs<br>
rejects it, does the Mono team consider that a valid bug or<br>
enhancement request?  (Is there a "duplicate Microsoft's bugs" mode<br>
for mcs?)<br>
<br>
Thanks for your help,<br>
<br>
<br>
Peter Dillinger | Senior Engineer<br>
Coverity | 185 Berry Street | Suite 6500, Lobby 3 | San Francisco, CA 94107<br>
The Leader in Development Testing<br>
Read our profile in Forbes, Coverity Gets Code Right 25% Faster<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br></div>