2010-12-15 9 views
6

Ich habe MonoDevelop 2.4.1 mit Mono 2.8.1 installiert. Mein Problem ist, dass ich keine Assembly-Referenz zu Assembly hinzufügen kann, die für .NET 4.0 kompiliert wurde (in derselben MonoDevelop-IDE).Hinzufügen von .NET 4.0-Assemblyreferenz in MonoDevelop 2.4.1

Was mache ich? Referenzen -> Bearbeiten von Referenzen -> .NET Assembly -> Durchsuchen zu Datei & Wählen Sie

Als MD zeigt einen Fehler, dass eine Assembly, die ich hinzufügen möchte, ist nicht .NET Assembly. Ich habe das Profil überall auf .NET 4.0 eingestellt.

Reflektor zerlegt meine Baugruppe in Ordnung, damit es in Ordnung ist. Mein Betriebssystem ist Windows 7 Was ist los?

UPD: Einen Fehler an Novell gesendet. Hier ist es https://bugzilla.novell.com/show_bug.cgi?id=659894

Antwort

5

Wenn ich "C:\Program Files\Mono-2.8.1\bin\mono.exe" "C:\Program Files\MonoDevelop\bin\MonoDevelop.exe" mache, verschwindet das Problem.

Es versteht sich, dass MonoDevelop.exe auf Microsoft .NET ausgeführt wird und das Problem ist, dass MonoDevelop (.NET 2.0-Assembly) eine Assembly (.NET 4.0) unter Verwendung von 2.0 APIs nicht erkennen kann.

Lets bei Code aussehen (MonoDevelop.Ide.Projects.AssemblyReferencePanel):

private void SelectReferenceDialog(object sender, EventArgs e) 
{ 
    string[] array = new string[this.chooser.Filenames.Length]; 
    this.chooser.Filenames.CopyTo(array, 0); 
    foreach (string str in array) 
    { 
     bool flag = true; 
     try 
     { 
      AssemblyName.GetAssemblyName(Path.GetFullPath(str)); 
     } 
     catch 
     { 
      flag = false; 
     } 
     if (flag) 
     { 
      this.selectDialog.AddReference(new ProjectReference(ReferenceType.Assembly, str)); 
     } 
     else 
     { 
      MessageService.ShowError(GettextCatalog.GetString("File '{0}' is not a valid .Net Assembly", str)); 
     } 
    } 
} 

Die Linie AssemblyName.GetAssemblyName(Path.GetFullPath(str)); eine Quelle allen Übels ist. Ich werde einen Fehlerbericht an novell senden. Oder es ist kein Fehler?

+1

Es ist ein Fehler, bitte file es. Wir sollten Mono.Cecil verwenden, um den Assemblynamen zu lesen, so wie wir es im Code für die Kernlaufzeitverarbeitung tun. –

+0

Ok. Ich werde es so schnell wie möglich tun. Der Link wird hier sein. Btw läuft MD direkt auf Mono erlaubt mir nicht, meine Projekte zu bauen, weil eines meiner Add-Ins TypeLoadExceptions wirft :(Wird auf eine Lösung warten – ILya

+0

Hier ist es - https://bugzilla.novell.com/show_bug.cgi? id = 659894 – ILya