Visual Studio (2013) hard reset

 Entwicklung, Software  Kommentare deaktiviert für Visual Studio (2013) hard reset
Mai 022015
 

Gestern musste ich wohl etwas vergeigt haben. Visual Studio zickte heute ziemlich ärgerlich rum. Beim starten kamen tonnen Fehlermeldungen und wenn ich gewisse Fenster einblenden wollte kam die Meldung „Unbekanntes Guid-Format“. Toll, ziemlich Hilfreich. Was habe ich alles Versucht um das Problem zu lösen um nicht ganz von vorne, also inkl. Windows 8.1, beginnen zu müssen. Continue reading »

Jul 142010
 

Das gestrige Posting VS2010 – Wahnsinnig hilfreiche Fehlermeldung hat wohl ein bisschen Verwirrung verursacht. Ich weiss jetzt noch nicht genau bei wem. Bei mir oder den Lesern. Deshalb hier nochmals ein Versuch mich zu erklären.

Den Reaktionen nach zu urteilen ist einigen ein Feature von Visual Studio nicht bewusst. Ich habe einige Mails bekommen, da offensichtlich die Kommentarfunktion im IE nicht will. 🙁 ReCaptcha ist jetzt ausgeschaltet und es sollte auch möglich sein Kommentare aus dem IE zu erfassen. Also nur zu.

Also hier mal detaillierter um was es genau geht. Ich nehme mir mal die Freiheit ein Mail zu zitieren das schön zeigt was ich meine.

Du verstehst da was falsch. Ein startprojekt ist _NICHT_ ein projekt das ein fenster oder eine konsole öffnet, bzw. einen eintrittspunkt hat. Das startup projekt ist das projekt, das geladen wird, wenn du den debugger anwirfst.

Davon _kann_ es nur _eines_ geben. Und zwar das, das im solution explorer fett dargestellt wird.

Es gibt also nix zu suchen: alles was die vs mitteilen will ist, das du einmal in den solution-explorer reinsehen musst: das projekt, das in fetter schrift aufgeführt ist, ist als "start-up project" markiert. Es hat aber keinen eintrittspunkt. Es kann nur eines davon geben, und das sollte auch bei 210 projekten mit 3x scrollen machbar sein. (zumindest auf meinen monitor passen ca. 90 projekte unternander…)

Der Autor des Mails geht davon hier aus.

Solution Explorer Simple

Mit einem Rechtsklick auf ein Projekt kann dieses als Startprojekt definiert werden. Das ist dann fett markiert im Solution Explorer. Das ist auch die Regel. Ergebnis ist dann folgendes (F5).

Start eines einfachen Projektes

In dieser Situation gebe ich allen recht die sagen, es kann doch nicht schwierig sein das richtige Projekt zu finden. Auch wenn ich 210 Projekte haben. Stimmt. Gebe ich euch recht.

Aber, und jetzt kommt das aber, Visual Studio kann mehr als NUR EIN Projekt starten. Diesen Dialog muss man aber kennen.

Rechtsklick auf der Solution und dann “Startprojekte festlegen”. Es heisst ja schon wunderbar Startprojekte.

Startprojekte festlegen

Es erscheint folgender Dialog.

Mehrere Startprojekte festlegen

Und hier kann man definieren welche Projekte gestartet werden sollen. Ich habe jetzt alle auf starten gestellt. Zwei Konsolen, eine WPF Anwendung und eine Klassen Library. Es darf erwartet werden (F5) das die Fehlermeldung kommt.

Nichts nutzende Fehlermeldung

Im Solution Explorer ist jetzt kein Projekt mehr fett markiert. Wenn man mehr als ein Projekt startet gibt es das “fette” Projekt im Solution Explorer nicht mehr.

Kein *fettes" Projekt mehr

Und jetzt nochmals. Wie so wird mir nicht gesagt welches Projekt nicht gestartet werden kann? Bei den 4 hier ist es noch einfach und ofensichtlich. Bei 210 Projekten ist es nicht mehr so einfach. Vor allem kann nichts sortiert werden. Ich kann also nicht kurz alle Projekte die gestartet werden an einen Haufen sortieren. #fail

Ich nehme also die ClassLibrary1 aus den Startprojekten raus.

Grund für den Fehler

Und jetzt tut es. Sieht so aus.

Start mehrerer Projekte

Also nochmals. Visual Studio kann mehr als ein Projekt auf einmal starten. Es kann auch mehr als ein Projekt debuggen. Und das ist ein sehr wertvolles Feature.

Im aktuellen Projekt haben wir für jedes Modul einen eigenen WCF Host. Diese müssen gestartet werden wenn man die Anwendung testen will. Wie sollten nun die 19 Hosts, die in einer Konsole realisiert sind, gestartet werden wenn nicht über dieses Feature? Über einen Batch oder so? Ich will die ja auch debuggen können.

Das sieht dann so aus. Nebst der eigentlich Anwendung werden noch 19 WCF Hosts gestartet.

Start von 20 Projkten

Also viel Spass beim finden des falsche selektierten Eintrages in einer Liste mit 210 Projekten wenn einem Visual Studio zwar sagt das eines Falsch ist aber nicht welches.

Viel Spass beim suchen

So, hoffentlich ist mein Frustgrund genügend ausführlich erklärt. 🙂

Ach ja. Diese Einstellungen sind Userspezifisch. Wenn also die *.suo Datei abhanden kommt macht man die Einstellungen nochmals. Und der Dialog ist nicht wirklich Userfreundlich.

kick it on dotnet-kicks.de

Feb 252010
 

Ich darf im Moment sehr viel WPF machen. Dazu kann ich entweder Visual Studio 2008 oder Expression Blend 3 nutzen. Beides lässt mich die Wände hoch gehen.

Im Visual Studio 2008 ist der Designer einfach nur schwach und verhält sich bisweilen sehr eigenartig. Aber das ist allseits bekannt. Also versuche ich mich an Expression Blend 3. Ich finde das Teil noch unbrauchbarer als VS.

Wie so?

1. Auf den Tabs gibt es kein Kontextmenü. Kein “Alle schliessen” oder “alle ausser diese schliessen”.

Expression Blend 3 Tabs

2. Ich kann mehrere XAML Dateien selektieren aber nicht miteinander öffnen. Muss alle einzeln doppelklicken. Nicht mal “Enter” geht.

Nur via Kontextmenü und öffnen.

Expression Blend 3 Projektexplorer

3. Code formatieren in Expression Blend 3? Ja wo den? Geht auch nicht? Kein Kontextmenü auf dem XAML Code. Man kann nicht mal Code zusammenklappen. Das können heute ja schon 0815 Editoren.

Expression Blend 3 Sourcecode

4. Der Codeeditor verhält sich oft anders als der in VS 2008. Wie oft habe ich schon einen Zeilenumbruch gemacht wo ich es nicht wollte.

5. Gewaltig was man in den Optionen alles einstellen kann. Wie stelle ich ein das ich einen schwarzen Hintergrund im Code habe?

Expression Blend 3 Optionen

6. Egal welches Farbschema. Kontrast ist immer schwach.

Expression Blend 3 Kontrast

Ich bin ja auf VS 2010 gespannt. Das Projekt soll dann sofort auf 2010 migriert werden. Das kann ja nur besser werden.

PS: Habe mir schon ein paar mal gewünscht diese Anwendung in WinForm zu machen. Einfach weil dort die Werkzeuge ausgereifter scheinen.

kick it on dotnet-kicks.de

Visual Studio 2008 – Neue Klasse ist nicht public

 Entwicklung  Kommentare deaktiviert für Visual Studio 2008 – Neue Klasse ist nicht public
Jan 262010
 

Irgend wie kann das gewaltig nerven. Ich bin an einem relativ grossen Projekt. Dabei muss ich, quasi Fliessbandmässig, neue Klassen erstellen.  Allerding sind die Klassen nicht public. Jedesmal das public ergänzen nervt doch gewaltig.

Lösung:

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1031\Class.zip
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1031\Interface.zip

In diesen zwei ZIP-Dateien sind die Vorlagen drin. Einfach noch ein public hinzufügen und schon klappt es wie gewünscht.

Wie so MS neue Klassen defaultmässig private macht ist mir nicht ganz klar. Ich brauche mehr public Klassen als private.

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;

namespace $rootnamespace$
{
	public class $safeitemrootname$
	{
	}
}

Das public in Zeile 8 macht es möglich.

kick it on dotnet-kicks.de

ReSharper – Farbeinstellung “Highlight current line”

 Entwicklung  Kommentare deaktiviert für ReSharper – Farbeinstellung “Highlight current line”
Dez 052009
 

Ich experimentiere wieder einmal mit Tools für Visual Studio rum. Vor kurzem viel mir die CodeRush Xpress Version in die Finger. Ist gratis und bietet, wie sollte es anders sein, ein paar Funktionen der grossen Version an.

Vor Jahren, mit Visual Studio 2003, nutzte ich einige Zeit lang ReSharper. Also wollte ich die aktuelle Version auch noch testen.

Ich lud mir beide Versionen runter und installierte sie als Trial. Die Vollversion von CodeRush schmiss ich aber gleich wieder runter. Es war mir einfach zu bunt in der IDE. Viel zu bunt. Also installiert ich dann noch ReSharper 4.5. Macht schon ein viel besserer Eindruck.

Etwas, was mir bei ReSharper ganz schnell gut gefällt ist das Hervorheben der aktuellen Zeile. Aber, mit Black Visual Studio sieht die Originaleinstellung nur blöde aus.

Current Line in Black Visual Studio

Bei den Settings zum ReSharper kann aber nur das “Highlight current line” eingeschaltet werden. Aber die Farbgebung kann dort nicht eingestellt werden.

ReSharper Settings

Nach kurzem suchen im Internet fand ich dann aber schnell die Lösung. Die Einstellung ist in den Optionen von Visual Studio zu finden. Bei “Umgebung –> Schriftarten und Farben”. Das Element heisst ReSharper Current Line.

Visual Studio Settings

Wenn dann hier was Sinnvolles eingestellt wird sieht es auch in der IDE wieder gut aus.

Highlight current line - Sieht gut aus.

Mal schauen was mir das Tool ReSharper sonst noch zu bieten hat.

kick it on dotnet-kicks.de

Aug 172009
 

Man arbeitet in einem Büro mit 6 andern Entwicklern. Jeder arbeitet fast an jedem Projekt mit. Wenn ich jetzt in den Code schaue sehe ich 6 verschiedene “Handschriften”.

Es gibt zwar eine Richtline wie der Code auszusehen hätte. Aber wie es mit Richtlinien so ist. Die sind da um nicht eingehalten zu werden. 🙂

Wie könne jetzt der Entwickler unterstützt werden um schon ganz einfache Richtlinien einzuhalten? Oder wie erreiche ich das ich zumindest im privaten Umfeld immer die selbe, oder zumindest eine ähnliche, “Unterschrift” habe?

Das Stichwort ist: Code Style Enforcer

Allerdings ist die Webseite nicht mehr ganz aktuell. Code Style Enforcer basiert auf DXCore von Devexpress. Früher konnte man DXCore einzeln runterladen, heute geht es nur noch mit einer Anwendung. In dieser ist DXCore enthalten.

Jetzt geht man wie folgt vor. Auf den Seiten von Devexpress lädt man CodeRush runter. Einfach die 30 Tage Version. Danach wird die Software installiert. Einfach aufpassen das man nur den DXCore installiert.

Installation DXCore

Jetzt muss noch der Code Style Enforcer besorgt werden. Dieser wird auch installiert.

Beim ersten Start von Visual Studio bekommt man jetzt ein paar Fragen vorgesetzt. Einfach mit OK durchklicken.

Was ich jetzt noch nicht erwähnt habe. Das Tool arbeitet mit den Regeln die IDesign für C# definiert hat. Das ist ein PDF mit ein paar Seiten worin einfach das nötigste definiert ist. Sehr einfach.

Aber jetzt kann es los gehen.

Wenn was nicht stimmt wird der Code einfach rot Unterstrichen.

Code Beispiel 1

Somit weiss jeder wo ein Fehler korrigiert werden muss. Im Kontextmenü wird sogar vorgeschlagen wie es korrigiert werden könnte.

Code Beispiel 2

Bei Methoden genau das selbe. Wenn die Maus auf den “Fehler” gesetzt wird zeigt ein PopUp an was korrigiert werden müsste.

Code Beispiel 3

Code Beispiel 4

Somit kann auf einfache Art und Weise sichergestellt werden das einige grundlegende Regeln eingehalten werden. Kein Entwickler kann sich dann noch rausreden. 🙂

Bei einer richtigen Infrastruktur kann das Problem wahrscheinlich auch anders angegangen werden. Ich gehe mal davon aus das es Tools/Umgebungen gibt die beim Einchecken auf Coderichtlinien prüfen würden. Aber bei uns ist das noch nicht der Fall. Deshalb wäre die Lösung doch schon sehr hilfreich. Privat natürlich auch.

Die Regeln können auch angepasst werden. Unter Start->Programme->Code Style Enforcer->Configurator können einige Anpassungen an den Regeln vorgenommen werden.

Code Style Enforcer Configurator

kick it on dotnet-kicks.de

Nov 102008
 

Ich darf wieder einmal mit Visual Studio 6.0 arbeiten. Da öffnet man eine Codedatei und ärgert sich schon das erste mal gewaltig. 🙂

Wieso? Weil beim scrollen mit dem Mausrad einfach nichts passiert. Das ist doch nicht mehr Zeitgemäss, so wie die IDE auch. 🙂

OK. Die Abhilfe. Man such bei Google nach “Visual Studio 6 Mausrad”. Der erste Eintrag bei mir geht zu Peter Bucher. Dort gibt es dann einen weiteren Link zu Microsoft (Mausrad nicht aktiviert in der Visual Basic 6.0-Entwicklungsumgebung).

3 Minuten später tut das Mausrad auch im Visual Studio 6 und ich freue mich über das bisschen mehr an Komfort.

Okt 262008
 

Ich wusste gar nicht, dass das überhaupt ein Problem sein könnte. Bei WinForm und WebForm kann man mit F7 von der Design-Ansicht in die Code-Ansicht wechseln. Aber zurück? Geht das?

Jap, dass geht. Jedenfalls bei mir. Mit Shift+F7 kommt man wieder in die Design-Ansicht.

VSTO – Seit SP1 für VS2008 – Schwanzbeisser Fehler

 Entwicklung, Software  Kommentare deaktiviert für VSTO – Seit SP1 für VS2008 – Schwanzbeisser Fehler
Aug 142008
 

Seit ich das SP1 für Visual Studio 2008 installiert habe zeigt mir die Entwicklungsumgebung einen eigenartigen Fehler an.

image

image

Den zweiten Parameter kann man nicht als ref übergeben. War früher sicher nicht so.

Nimmt man das ref raus sieht es so aus.

image

image

Ja was nun? Mit ref oder nicht?

Aber die erste Version, die mit ref, kann man wenigstens erstellen.

Tags: , ,

VSTO – Transparente Icon’s in den Menüs

 Entwicklung, Software  Kommentare deaktiviert für VSTO – Transparente Icon’s in den Menüs
Aug 142008
 

Ich glaube jeder ist mit mir einig, wenn ich sage, dass hier sieht hässlich aus.

Icons im Menü ohne Transparenz.

Mit VSTO ist es jetzt aber gar nicht mal so einfach transparente Icon’s zu bekommen.

Ein Icon wird einem CommandBarButton (cbc) wie folgt hinzugefügt.

if (item.Icon.Length > 0)
{
	stdole.IPictureDisp pic = GetImage(item.Icon);

	if (pic != null)
	{
		cbc.Picture = pic;
	}
}

GetImage sieht so aus.

private stdole.IPictureDisp GetImage(string imageName)
{
	stdole.IPictureDisp pic = null;
	string file = Path.Combine(iconPath, imageName);
	if (File.Exists(file))
	{
		try
		{
			pic = PictureConverter.
				ImageToPictureDisp(Image.FromFile(file));
		}
		catch (Exception ex)
		{
			//Hier Fehler
		}
	}
	return pic;
}

Und der PictureConverter ist eine eigene Klasse. Findet man überall im Inet.

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace LAG.WordPlus.OfficeAddIns.Word2003
{
	public class PictureConverter : AxHost
	{
		public PictureConverter() : base(string.Empty)
		{
		}
		public static stdole.IPictureDisp ImageToPictureDisp(Image image)
		{
			return (stdole.IPictureDisp)GetIPictureDispFromPicture(image);
		}
		public static stdole.IPictureDisp IconToPictureDisp(Icon icon)
		{
			return ImageToPictureDisp(icon.ToBitmap());
		}
		public static Image PictureDispToImage(stdole.IPictureDisp picture)
		{
			return GetPictureFromIPicture(picture);
		}
	}
}

Wie macht man nun die Icon’s transparent?

Man erweitere das erste Codesnippet um die Zeile 7.

if (item.Icon.Length > 0)
{
	stdole.IPictureDisp pic = GetImage(item.Icon);
	if (pic != null)
	{
		cbc.Picture = pic;
		SetImage(cbc, item.Icon);
	}
}

Der Code für SetImage sieht so aus.

private void SetImage(CommandBarButton button, string icon)
{
	try
	{
		Bitmap bmp = new Bitmap(Path.Combine(iconPath, icon));
		IntPtr Hicon = bmp.GetHicon();
		Icon newIcon = Icon.FromHandle(Hicon);

		ImageList newImageList = new ImageList();
		newImageList.ColorDepth = ColorDepth.Depth8Bit;
		newImageList.ImageSize = new Size(16, 16);
		newImageList.Images.Add(newIcon);

		button.Picture = PictureConverter.
				ImageToPictureDisp(newImageList.Images[0]);
		Bitmap mask = (Bitmap)newImageList.Images[0].Clone();

		for (int x = 0; x < 16; x++)
		{
			for (int y = 0; y < 16; y++)
			{
				mask.SetPixel(x, y, (mask.GetPixel(x, y) 
					== Color.Transparent
					|| mask.GetPixel(x, y).Name == "0") 
					? Color.White : Color.Black);
			}
		}
		button.Mask = PictureConverter.ImageToPictureDisp(mask);
	}
	catch (Exception ex)
	{
		//Fehlerbehandlung
	}
}

Das Ergebnis sieht dann so aus.

Icons im Menü mit Transparenz.

Viel besser. Oder?