none
Edits are made which cannot be compiled. RRS feed

  • Frage

  • Hallo NG

    Habe seit geraumer Zeit folgende Fehlermeldung:

    "Edits are made which cannot be compiled. Execution cannot continue until the compile errors are fixed."

    Tritt auf wenn ich nach dem setzen eine BreakPoints und der Programmablauf bei diesem stoppt,

    eine Programmänderung mache. Ohne Programmänderung habe ich diese Problem nicht.

    Wenn ich dann auf Edit drücke gehts nur weiter, wenn ich die Aenderung rückgängig mache.

    Auch nur das einfügen eines Kommentars bewirkt diese Meldung.

     

    "Enable Edit and Continue" ist in Tools->Options->Debugging->Edit and Continue gesetzt.

    Danke

    Robert Oberholzer

     

    Dienstag, 23. November 2010 09:18

Antworten

  • Hallo Robert,
    Hallo Frank,

    Ich habe das von Robert gemeldete Verhalten reproduzieren können:

    using System;
    using Word = Microsoft.Office.Interop.Word;
    
    namespace EditAndContinue
    {
     class Program
     {
     static void Main(string[] args)
     {
      Word.Application wordApp = new Word.Application();
      wordApp.Visible = false; // hier Breakpoint setzen und auf true ändern
     }
     }
    }
    
    

    Allerdings: Robert, wenn Du in der Registerkarte 'Fehler' (Ansicht > Fehlerliste) nachschaust, findest Du folgendes:

    Durch Ändern von "method", das eine Syntax eines eingebetteten Interoptyps bzw. Members enthält, wird die Fortsetzung des Debugvorgangs verhindert, während "Bearbeiten und fortfahren" aktiviert ist.
    Legen Sie zum Aktivieren von "Bearbeiten" und "Fortfahren" die Eigenschaft "Interoptypen einbetten" für COM-Verweise auf "false" fest, wenn Debugging ausgeführt wird.

    Wir werden uns wohl mit der Erklärung aus dem Fehler-Fenster der IDE und mit der jener aus der VB-Dokumentation begnügen müssen.

    [x86, Visual Studio 2010, C#, Office Interop 14.0.0.0]

    P.S. Die Fehlerliste bietet einem die Möglichkeit an, Details zum Fehler nachzuschlagen. In diesem Fall wird als Link dies generiert (wobei dazu keine Seite gefunden werden kann):

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=DE-DE&k=k(VS.CSHARP.ENC.ERROR_4077)&rd=true

    Gruß
    Marcel

    Dienstag, 23. November 2010 17:30
    Moderator
  • Hallo Marcel,

    ich kann das auch mit dem von Robert benutzen Excel 14 nachvollziehen.
    Es steht dann der Fehler in meiner angegebenen Ansicht/Fehlerliste, was bei Robert nicht so ist. Dennoch sehe das dann auch als Lösung an, da dieser Fehler auch in C# auftritt (kleiner MSDN-Bug).

    using System;
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Windows.Forms;
    
    namespace WinInteropDemo
    {
     partial class Form1 : Form
     {
     public Form1()
     {
     Excel.Application app = new Excel.Application();
     app.Visible = false; // hier Breakpoint setzen und auf true ändern
     }
     }
    }
    
    • in Menü Ansicht/Fehlerliste [C#]:

      Fehler 1 Durch Ändern von "constructor", das eine Syntax eines eingebetteten Interoptyps bzw. Members enthält, wird die Fortsetzung des Debugvorgangs verhindert, während "Bearbeiten und fortfahren" aktiviert ist.
      Legen Sie zum Aktivieren von "Bearbeiten" und "Fortfahren" die Eigenschaft "Interoptypen einbetten" für COM-Verweise auf "false" fest, wenn Debugging ausgeführt wird. 

    Was die MSDN-Doku betrifft (VB->C#) scheint also ein kleiner Fehler vorzuliegen, da dieser auch in der C# Doku dazu hätte direkt zu finden sein müssen.

    Indirekt weisen meine Artikel-Links allerdings klar (auch bei C#) darauf hin:

    [Exemplarische Vorgehensweise: Office-Programmierung (C# und Visual Basic)]
    http://msdn.microsoft.com/de-de/library/ee342218.aspx

    dort zum Beispiel:

    • Ändern Sie im Fenster Eigenschaften den Wert der Eigenschaft Interoptypen einbetten von True in False.

    ------------------

    Weitere Möglichkeiten aus Links, die ich schon am Anfang gepostet hatte:

    [Gewusst wie: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C# 2010-Funktionen (C#-Programmierhandbuch)]
    http://msdn.microsoft.com/de-de/library/dd264733.aspx

    • Suchen Sie Interoptypen einbetten in der Liste der Eigenschaften, und ändern Sie den Wert in False.Sie können auch zur Kompilierung die /reference-Compileroption anstelle der /link-Compileroption an einer Eingabeaufforderung verwenden.

    __________________

    Lösung also (in die positive und negative Richtung verifiziert) :

    1. Klicke auf die "Microsoft.Office.Interop.Excel" unter Verweise im Projekt..
    2. Drücke ggf. F4, um in die Eigenschaften zu gelangen.
    3. Gehe zu "Interop-Typen einbetten" und setze den Wert auf false

    ciao Frank

    Dienstag, 23. November 2010 18:23
  • Hallo Robert,

    hast Du mal explizit das Fenster aus Menü: "Ansicht/Fehlerliste" aufgemacht? Stehen dort keine Fehler, wenn Du die Projektmappe komplett neuerstellt hast?

     


    ciao Frank
    Dienstag, 23. November 2010 10:50
  • Hallo Zusammen,

    Vielen Dank für Eure Antworten. Hier ein kleiner Zwischenbericht.

    Habe die Referenzen zu Microsoft.cSharp.dll, Microsoft.Office.Interop.Excel, Word und Outlook entfernt.

    Entsprechende Stellen in Code auskommentiert. Und es läuft.

    Wenn ich nun wieder die Referenz zu Microsoft.cSharp.dll V4.0 und Microsoft.Office.Interop.Excel V14.0 hinzufüge,habe ich wieder den Fehler.

    Es langt wenn beim Programmunterbruch bei einem BreakPoint irgendwo eine Kommandozeile eingefügt wird.

    Lösung: Bei Microsoft.Office.Interop.Excel, Word, Office in Properties "Embed Interop Types" auf False stellen.  So geht's.

    Gruss Robert

    Dienstag, 23. November 2010 14:41
  • Hallo Robert,

    Laut MSDN: "Dieser Fehler tritt auf, wenn Sie versuchen, die Funktion zum Bearbeiten und Fortfahren mit einem Methodentext zu verwenden, der sich auf einen Typ auswirkt, der von einer primären Interopassembly eingebettet wurde. Interoptypen werden standardmäßig in Visual Studio 2010 aktiviert. Daher kann durch ein Projekt, von dem der Fehler beim Debuggen mit Visual Studio 2008 nicht verursacht wurde, der Fehler beim Debuggen mit Visual Studio 2010 verursacht werden."

    Bearbeiten und Fortfahren (Visual Basic): 35662:
    http://msdn.microsoft.com/de-de/library/ee519065.aspx

    Gruß
    Marcel

    Dienstag, 23. November 2010 15:15
    Moderator

Alle Antworten

  • Hi,

    ggfs. hilft es, wenn Du die richtige Fehlermeldung mal in eine Suchmaschine eintippelst :)

      http://www.google.de/#q="Edits+were+made+which+cannot+be+compiled" (are vs. were)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 23. November 2010 09:37
    Moderator
  • Hallo Stefan,

    Sorry für den Verschreiber "are / where".

    Selbstverständlich habe ich mich in der Suchmaschiene umgeschaut.

    Leider ohne Erfolg. Es wird viel geschrieben aber leider ohne Lösung für mein Problem.

    Wie gesagt tritt es bei mir nur nach einem BreakPoint-Stop und anschliessendem editieren auf.

    Gruss Robert Oberholzer

     

     

    Dienstag, 23. November 2010 10:01
  • Hallo Robert,

    Sorry für den Verschreiber "are / where".

    ok, war einen Versuch wert :) Wenn Du denn wirklich nur nach der Fehlermeldung mit "are" gesucht hättest, wären doch erheblich weniger Suchergebnisse vorhanden gewesen.
    Leider ohne Erfolg. Es wird viel geschrieben aber leider ohne Lösung für mein Problem.

    Wie gesagt tritt es bei mir nur nach einem BreakPoint-Stop und anschliessendem editieren auf.

    Poste mal bitte die genaue Versionsnummer deiner Visual Studio Installation.

    Dann wäre es noch hilfreich zu wissen, ob es bei jedem Projekt oder nur bei bestimmten Projekttypen passiert.

    Ggfs. ist das hier auch "hilfreich" (allerdings nur zur Bestätigung, dass es wohl ein Bug ist)

      http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/15c94bf2-66ca-4963-a7a4-27cb0840d811/

      https://connect.microsoft.com/VisualStudio/feedback/details/586636/dynamic-object-as-method-parameters-breaks-edit-and-continue-for-the-class-and-the-project

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 23. November 2010 10:18
    Moderator
  • Leider ohne Erfolg. Es wird viel geschrieben aber leider ohne Lösung für mein Problem.

    Robert, zB hier
    http://connect.microsoft.com/VisualStudio/feedback/details/584811/

    wird zu ähnlichem gesagt:
      "We will look into improving this experience in future versions of Visual Studio"
    also wohl grob 2 Jahre Geduld ;-)
     (oder IMHO zT besser, auf EnC verzichten)

    Weitere auch
    http://www.google.com/search?q=%22Execution+cannot+continue+until+the+compile+errors+are+fixed%22+site:microsoft.com&filter=0

    zT Probleme wenn Netzlaufwerke im Spiel;
    oder (nach Backup!)  zB auch mal temporäre Projektdateien (.suo / .user) löschen. Ansonst vielleicht auch mal Umfang von Projekt/Solution schrittweise reduzieren oder Code in neue Solution migrieren, insbesondere wenn Fremd-Komponenten eingesetzt.
    Oder Studio mal im zB SafeMode starten:
    http://msdn.microsoft.com/en-us/library/xee0c8y7.aspx


    Dienstag, 23. November 2010 10:20
  • Hallo Robert,

    hast Du mal explizit das Fenster aus Menü: "Ansicht/Fehlerliste" aufgemacht? Stehen dort keine Fehler, wenn Du die Projektmappe komplett neuerstellt hast?

     


    ciao Frank
    Dienstag, 23. November 2010 10:50
  • Hallo Robert,

    Wenn Du ausschließen kannst, dass die Änderung zu einem Kompilierfehler führt, und das Ganze reproduzierbar ist (für mich ist es z.Z. nicht), solltest Du Dich direkt an den Microsoft Produkt-Support wenden.

    Gruß
    Marcel

    Dienstag, 23. November 2010 11:53
    Moderator
  • Hallo Zusammen,

    Vielen Dank für Eure Antworten. Hier ein kleiner Zwischenbericht.

    Habe die Referenzen zu Microsoft.cSharp.dll, Microsoft.Office.Interop.Excel, Word und Outlook entfernt.

    Entsprechende Stellen in Code auskommentiert. Und es läuft.

    Wenn ich nun wieder die Referenz zu Microsoft.cSharp.dll V4.0 und Microsoft.Office.Interop.Excel V14.0 hinzufüge,habe ich wieder den Fehler.

    Es langt wenn beim Programmunterbruch bei einem BreakPoint irgendwo eine Kommandozeile eingefügt wird.

    Lösung: Bei Microsoft.Office.Interop.Excel, Word, Office in Properties "Embed Interop Types" auf False stellen.  So geht's.

    Gruss Robert

    Dienstag, 23. November 2010 14:41
  • Hallo Robert,

    Laut MSDN: "Dieser Fehler tritt auf, wenn Sie versuchen, die Funktion zum Bearbeiten und Fortfahren mit einem Methodentext zu verwenden, der sich auf einen Typ auswirkt, der von einer primären Interopassembly eingebettet wurde. Interoptypen werden standardmäßig in Visual Studio 2010 aktiviert. Daher kann durch ein Projekt, von dem der Fehler beim Debuggen mit Visual Studio 2008 nicht verursacht wurde, der Fehler beim Debuggen mit Visual Studio 2010 verursacht werden."

    Bearbeiten und Fortfahren (Visual Basic): 35662:
    http://msdn.microsoft.com/de-de/library/ee519065.aspx

    Gruß
    Marcel

    Dienstag, 23. November 2010 15:15
    Moderator
  • Hallo Robert,

    da wir hier in einer C# Gruppe sind hier die korrekten Referenzen zu "Edit & Continue" nachgereicht:

    [Bearbeiten und Fortfahren (Visual C#)]
    http://msdn.microsoft.com/de-de/library/x17d7wxw(v=VS.100).aspx

    [Unterstützte Codeänderungen (C#)]
    http://msdn.microsoft.com/de-de/library/ms164927.aspx
    (siehe hier auch "nicht unterstützte Szenarios")

    Vielleicht kannst Du uns auch die Fehlernr sagen. Dann kann man hier Hintergrundinformationen dazu erfahren:

    [Bearbeiten und Fortfahren: Fehlermeldungen und Warnungen (C#)]
    http://msdn.microsoft.com/de-de/library/ms164930.aspx

    BTW: im Menü Anzeige/Fehlerliste war kein Fehler - korrekt?

    Bitte zur Sicherheit auch noch mal die Visual Stduio Version angeben, denn die Fehler-Typen sind von dieser Version abhängig. . (und ob x64 oder x86).

    Es ist ein guter Weg, ein reproduzierbares Projekt zu erstellen (Du hast ihn schon beschritten).

    BTW: hier auch nochmal der visuelle Dialog (weiter unten im Artikel), der Deiner Meldung "Error were made ...." zum Vorschein kommt, der durchaus "by design" so angezeigt ist.


    ciao Frank

    Dienstag, 23. November 2010 15:29
  • Hallo Frank,

    da wir hier in einer C# Gruppe sind hier die korrekten Referenzen zu "Edit & Continue" nachgereicht:

    [Bearbeiten und Fortfahren (Visual C#)]
    http://msdn.microsoft.com/de-de/library/x17d7wxw(v=VS.100).aspx

    [Unterstützte Codeänderungen (C#)]
    http://msdn.microsoft.com/de-de/library/ms164927.aspx
    (siehe hier auch "nicht unterstützte Szenarios")

    [Bearbeiten und Fortfahren: Fehlermeldungen und Warnungen (C#)]
    http://msdn.microsoft.com/de-de/library/ms164930.aspx


    Hast Du denn die konkrete C#-Entsprechung des o.g. VB-Links gefunden? Dann reich sie doch bitte nach. Die von Dir geposteten Links sind eher allgemein, wenn ich mich nicht irre.

    Gruß
    Marcel
    Dienstag, 23. November 2010 15:51
    Moderator
  • Hallo Marcel,

    Dein Link gilt so nicht für C#! Der ist für Visual Basic. [Edit: kann aber trotzdem in C# auftreten].

    Allgemein gültige Hinweise zur Typeinbettung für C# (und VB) bzgl. Typ-Einbettung kannst Du hier finden:

    [Exemplarische Vorgehensweise: Einbetten von Typinformationen aus Microsoft Office-Assemblys (C# und Visual Basic)]
    http://msdn.microsoft.com/de-de/library/ee317478.aspx

    [Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys (C# und Visual Basic)]
    http://msdn.microsoft.com/de-de/library/dd409610.aspx



         > eher allgemein

    ich denke, wenn man genau liest, schon recht dediziert. Ich warte ja noch auf die Fehlernr, Version, x64/x86 etc. fehlt (die Fragen an ihn).
    Wenn man den möglichen Fehlernummern-Beschreibungen durchlesen würde, ist es extrem (zu) detaillert.
    Ich warte hier erstmal seine Antwort auf meine Frage ab.

     


    ciao Frank
    Dienstag, 23. November 2010 16:04
  • Hallo Frank

    Hier nochmals die Antworten auf Deine Fragen.

    Habe sie schon einmal geschickt sind aber irgendwie nicht gesendet worden.

     

    Leider bekomme ich keine Fehlernummer in beiden von meinen Projekten. (Test und Produktiv Aplikation).

    Nur ein Fenster "Edit and Contignue" mit den beiden Buttons Edit und Stop sowie der Meldung:

    "Edits were made which cannot be compiled. Execution cannot continue until the compile errors are fixed."

     

    Ich erhalte keine Anzeige in Anzeige / Fehlerliste weder beim Neu erstellen noch während der Ausführung.

     

    Visual Studio 2010  Version: 10.0.30319.1 RTMRel

    .NET Framework Version 4.0.30319 RTMRel

    X86

    Gruss Robert

    Dienstag, 23. November 2010 16:23
  • Hallo Frank,

    > Dein Link gilt so nicht für C#!

    Willst Du damit sagen, dass das, was in VB hinsichtlich Edit & Continue nicht möglich ist, unter C# plötzlich funktioniert? 

    Die C#-spezifische Enstprechung zum VB-Link konnte ich genausowenig finden wie Du ;-) 

    Ich hatte natürlich im Vorfeld alle C#-Fehlermeldungen und Warnungen durchgesehen, ohne aber Entsprechendes finden zu können - deshalb der Verweis auf die VB-Dokumentation, die im Übrigen ziemlich genau das beschreibt, was Robert beim Debuggen seiner Anwendung erlebt.

    Zitat MSDN: So beheben Sie diesen Fehler - Legen Sie während des Debuggings die Eigenschaft "Interoptypen einbetten" für alle COM-Verweise auf "False" fest.

    Zitat Robert: Lösung: Bei Microsoft.Office.Interop.Excel, Word, Office in Properties "Embed Interop Types" auf False stellen.


    Gruß
    Marcel

    Dienstag, 23. November 2010 16:31
    Moderator
  • Hallo Robert,
    Hallo Frank,

    Ich habe das von Robert gemeldete Verhalten reproduzieren können:

    using System;
    using Word = Microsoft.Office.Interop.Word;
    
    namespace EditAndContinue
    {
     class Program
     {
     static void Main(string[] args)
     {
      Word.Application wordApp = new Word.Application();
      wordApp.Visible = false; // hier Breakpoint setzen und auf true ändern
     }
     }
    }
    
    

    Allerdings: Robert, wenn Du in der Registerkarte 'Fehler' (Ansicht > Fehlerliste) nachschaust, findest Du folgendes:

    Durch Ändern von "method", das eine Syntax eines eingebetteten Interoptyps bzw. Members enthält, wird die Fortsetzung des Debugvorgangs verhindert, während "Bearbeiten und fortfahren" aktiviert ist.
    Legen Sie zum Aktivieren von "Bearbeiten" und "Fortfahren" die Eigenschaft "Interoptypen einbetten" für COM-Verweise auf "false" fest, wenn Debugging ausgeführt wird.

    Wir werden uns wohl mit der Erklärung aus dem Fehler-Fenster der IDE und mit der jener aus der VB-Dokumentation begnügen müssen.

    [x86, Visual Studio 2010, C#, Office Interop 14.0.0.0]

    P.S. Die Fehlerliste bietet einem die Möglichkeit an, Details zum Fehler nachzuschlagen. In diesem Fall wird als Link dies generiert (wobei dazu keine Seite gefunden werden kann):

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=DE-DE&k=k(VS.CSHARP.ENC.ERROR_4077)&rd=true

    Gruß
    Marcel

    Dienstag, 23. November 2010 17:30
    Moderator
  • Hallo Marcel,

    ich kann das auch mit dem von Robert benutzen Excel 14 nachvollziehen.
    Es steht dann der Fehler in meiner angegebenen Ansicht/Fehlerliste, was bei Robert nicht so ist. Dennoch sehe das dann auch als Lösung an, da dieser Fehler auch in C# auftritt (kleiner MSDN-Bug).

    using System;
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Windows.Forms;
    
    namespace WinInteropDemo
    {
     partial class Form1 : Form
     {
     public Form1()
     {
     Excel.Application app = new Excel.Application();
     app.Visible = false; // hier Breakpoint setzen und auf true ändern
     }
     }
    }
    
    • in Menü Ansicht/Fehlerliste [C#]:

      Fehler 1 Durch Ändern von "constructor", das eine Syntax eines eingebetteten Interoptyps bzw. Members enthält, wird die Fortsetzung des Debugvorgangs verhindert, während "Bearbeiten und fortfahren" aktiviert ist.
      Legen Sie zum Aktivieren von "Bearbeiten" und "Fortfahren" die Eigenschaft "Interoptypen einbetten" für COM-Verweise auf "false" fest, wenn Debugging ausgeführt wird. 

    Was die MSDN-Doku betrifft (VB->C#) scheint also ein kleiner Fehler vorzuliegen, da dieser auch in der C# Doku dazu hätte direkt zu finden sein müssen.

    Indirekt weisen meine Artikel-Links allerdings klar (auch bei C#) darauf hin:

    [Exemplarische Vorgehensweise: Office-Programmierung (C# und Visual Basic)]
    http://msdn.microsoft.com/de-de/library/ee342218.aspx

    dort zum Beispiel:

    • Ändern Sie im Fenster Eigenschaften den Wert der Eigenschaft Interoptypen einbetten von True in False.

    ------------------

    Weitere Möglichkeiten aus Links, die ich schon am Anfang gepostet hatte:

    [Gewusst wie: Zugreifen auf Office-Interop-Objekte mithilfe von Visual C# 2010-Funktionen (C#-Programmierhandbuch)]
    http://msdn.microsoft.com/de-de/library/dd264733.aspx

    • Suchen Sie Interoptypen einbetten in der Liste der Eigenschaften, und ändern Sie den Wert in False.Sie können auch zur Kompilierung die /reference-Compileroption anstelle der /link-Compileroption an einer Eingabeaufforderung verwenden.

    __________________

    Lösung also (in die positive und negative Richtung verifiziert) :

    1. Klicke auf die "Microsoft.Office.Interop.Excel" unter Verweise im Projekt..
    2. Drücke ggf. F4, um in die Eigenschaften zu gelangen.
    3. Gehe zu "Interop-Typen einbetten" und setze den Wert auf false

    ciao Frank

    Dienstag, 23. November 2010 18:23
  • Hallo Marcel,

    nein, ist wohl ~eher ein kleiner MSDN-Bug, auch, wenn sie anderswo (nicht als expliziter Fehler) entsprechende Hinweise auch für C# beschreibt (siehe meine Links im vorigen Posting und weiter unten).


    ciao Frank
    Dienstag, 23. November 2010 18:59