none
Der Name "Bezeichner" ist im aktuellen Kontext nicht vorhanden RRS feed

  • Frage

  • Halle NG,

    manche Variablen werden im Debug Fenster nicht angezeigt. Das Überwachungsfenster meldet obigen Fehler. Es handelt sich um Variable innerhalb einer Funktion. Es gibt keine Fehlermeldung. Auch ich diese Variable mit return zurückgebe gibt es in der aufrufenden Funktion bei dieser variable (anderer Bezeichner) diese Meldung. Andere Variablen werden korrekt angezeigt. Auch das Beenden des VS und ein Neustart ist ohne Erfolg.

    Was kann die Ursache sein?

    Windows 8.1, VS 2013, Version 10.0.30219.00 Update 2 CTP, c#.

    Gruß Klaus


    Donnerstag, 15. Mai 2014 07:48

Antworten

  • Hallo Klaus,

    in dem Fall würde ich mal folgendes probieren:

    Projektmappe komplett bereinigen (geht über das Menü "Erstellen" -> "Projektmappe bereinigen"), danach alles erneut kompilieren.

    Wenn es dann noch nicht geht, mal im BIN Ordner schauen, ob dort alle Assemblies, die durch deine Anwendung erzeugt werden, einen aktuellen Zeitstempel haben. Falls nicht, mal alles löschen und dann nochmal probieren.

    Wenn es dann noch nicht geht, lösch mal die <Projektmappenname>.suo Datei (nur die .suo, nicht die .sln, ...)


    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

    Donnerstag, 15. Mai 2014 08:44
    Moderator

Alle Antworten

  • Hallo Klaus,

    befindest Du dich denn überhaupt innerhalb dieser Funktion? Wird die Variable vor der Codezeile, in der dein Breakpoint sitzt, deklariert?

    Poste bitte mal eine solche Funktion, mit der man das nachstellen kann.


    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

    Donnerstag, 15. Mai 2014 08:09
    Moderator
  • Hallo Stefan,

    hier der Code und natürlich befinde ich mich in der Funktion.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Drawing;
    
    namespace RuKontakt
    {
        public partial class RuPDF
        {
            public Rectangle GetTextWith(string text, Font font)
            {
                int testint = 0;
                Rectangle ruttt = new Rectangle();
                System.Drawing.Color textColor = System.Drawing.Color.Black;
                System.Drawing.Color backColor = System.Drawing.Color.White;
    
                Image image = DrawText(text, font, textColor, backColor);
                int width = image.Width;
                int height = image.Height;
                //-----------------------------------------------------------------------
                // Bitmap in der maximalen Größe des Texts erstellen, deren
                // Hintergrundfarbe ermitteln und schließlich den Text hineinzeichnen.
                //-----------------------------------------------------------------------
                // SizeF sizef = gDevice.MeasureString(strText, font);
                Bitmap bmp = new Bitmap(image, width, height);
    
                System.Drawing.Color clrBackground = bmp.GetPixel(0, 0);
                Graphics gImage = Graphics.FromImage(bmp);
                gImage.DrawString(text, font, Brushes.Red, 0, 0);
    
                //-----------------------------------------------------------------------
                // Wir ermitteln die Position des jeweils am weitesten links, rechts,
                // oben und unten liegenden Pixels, das von der Hintergrundfarbe
                // abweicht.
                //-----------------------------------------------------------------------
                int iXMin = bmp.Width;
                int iXMax = 0;
                int iYMin = bmp.Height;
                int iYMax = 0;
    
                for (int iY = 0; iY < bmp.Height; ++iY)
                {
                    for (int iX = 0; iX < bmp.Width; ++iX)
                    {
                        if (bmp.GetPixel(iX, iY) != clrBackground)
                        {
                            if (iX < iXMin) { iXMin = iX; }
                            if (iX > iXMax) { iXMax = iX; }
                            if (iY < iYMin) { iYMin = iY; }
                            if (iY > iYMax) { iYMax = iY; }
                        }
                    }
                }
    
                //-----------------------------------------------------------------------
                // Wenn wir kein solches Pixel gefunden haben, geben wir ein Rechteck
                // der Größe 0 zurück.
                //-----------------------------------------------------------------------
                if (iXMin > iXMax || iYMin > iYMax)
                {
                    return default(Rectangle);
                }
    
                //-----------------------------------------------------------------------
                // Ansonsten geben wir das Rechteck zurück, das den Text genau
                // umschließt. Mit Umschließen ist gemeint, dass ein Text, der über
                // (also vor) das Rechteck gezeichnet wird, alle vier Kanten des
                // Rechtecks teilweise verdeckt, aber an keiner Stelle über die
                // Kanten nach außen herausragt.
                //-----------------------------------------------------------------------
                ruttt =  new Rectangle(iXMin, iYMin, iXMax - iXMin, iYMax - iYMin);
                return new Rectangle(iXMin, iYMin, iXMax - iXMin, iYMax - iYMin);
    
               // return ruttt;
            }
            private Image DrawText(String text, Font font, Color textColor, Color backColor)
            {
                //first, create a dummy bitmap just to get a graphics object
                Image img = new Bitmap(1, 1);
                Graphics drawing = Graphics.FromImage(img);
    
                //measure the string to see how big the image needs to be
                SizeF textSize = drawing.MeasureString(text, font);
    
                //free up the dummy image and old graphics object
                img.Dispose();
                drawing.Dispose();
    
                //create a new image of the right size
                img = new Bitmap((int)textSize.Width, (int)textSize.Height);
    
                drawing = Graphics.FromImage(img);
    
                //paint the background
                drawing.Clear(backColor);
    
                //create a brush for the text
                Brush textBrush = new SolidBrush(textColor);
    
                drawing.DrawString(text, font, textBrush, 0, 0);
    
                drawing.Save();
    
                textBrush.Dispose();
                drawing.Dispose();
    
                return img;
            }
        }
    }

    Es betrifft die Variable ruttt, aber auch testint.

    Gruß Klaus


    Donnerstag, 15. Mai 2014 08:26
  • Hallo Klaus,

    und auf welcher Zeile genau befindet sich der Breakpoint bzw. auf welcher Zeile steht der Debugger in dem Moment, in dem Du die Variable anzeigen lässt?


    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

    Donnerstag, 15. Mai 2014 08:28
    Moderator
  • Hallo Stefan,

    auf :     System.Drawing.Color textColor = System.Drawing.Color.Black;

    auch: return new Rectangle(iXMin, iYMin, iXMax - iXMin, iYMax - iYMin);

    Aber das spielt gar keine Rolle wo ich den Breakpunkt setze. Auch wenn ich den Cursor auf die Variable setze wird der Wert nicht angezeigt.

    Gruß Klaus

    Donnerstag, 15. Mai 2014 08:40
  • Hallo Klaus,

    in dem Fall würde ich mal folgendes probieren:

    Projektmappe komplett bereinigen (geht über das Menü "Erstellen" -> "Projektmappe bereinigen"), danach alles erneut kompilieren.

    Wenn es dann noch nicht geht, mal im BIN Ordner schauen, ob dort alle Assemblies, die durch deine Anwendung erzeugt werden, einen aktuellen Zeitstempel haben. Falls nicht, mal alles löschen und dann nochmal probieren.

    Wenn es dann noch nicht geht, lösch mal die <Projektmappenname>.suo Datei (nur die .suo, nicht die .sln, ...)


    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

    Donnerstag, 15. Mai 2014 08:44
    Moderator
  • Hallo Stefan,

    bis zum Löschen der .suo hat alles nichts gebracht.
    Das Löschen von .suo schaft mir allerdings Probleme, es findet sich ein Verweis nicht mehr. Es wird nun wohl etwas länger dauern, da ich auch noch aus dem Haus muss.

    Ich melde mich wieder.

    Gruß Klaus

    Donnerstag, 15. Mai 2014 08:57
  • Hallo Klaus,

    in der .suo werden aber keine Verweise gespeichert. Einstellungen der IDE zum Projekt, Codefaltung und ähnliches aber Verweise (AFAIK) nicht.

    Ich hab die Befürchtung, dass dein Projekt etwas zerschossen ist. Woher das kommt und wie man das beheben könnte, kann man aber so von außen nicht sagen, dafür müsste man das Projekt mal komplett sehen.

    Schau aber evtl. mal in "Erstellen" -> "Konfigurations-Manager", ob dort für alle Projekte in allen Konfigurationen der Haken bei "Erstellen" gesetzt ist. Falls nicht, mach das mal.


    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

    Donnerstag, 15. Mai 2014 09:03
    Moderator
  • Hallo Stefan,

    ich habe das Projekt von MyCSharp.de übernommer und im Laufe der Zeit viele Änderungen vorgenommen. Der fehlende Verweis kommt sicher durch das Löschen den Bin's, es fehlte die Google-Api.  Habe den fehlenden Verweis inzwischen auflösen können. Nun funktioniert auch alles wieder wie gewünscht.

    Hätte nicht gedacht dass allem Anschein nach vorhandene Binärdateien die Auswertung der Debug-Informationen so beeinflussen können.

    Vielen Dank für deine Hilfe!

    Gruß Klaus

    Donnerstag, 15. Mai 2014 09:33