„CSC (0,0) Source file ‚xyz.cs‘ could not be found“

Problem:
Nachdem ich einige .cs-Dateien gelöscht hatte und eine .cs-Datei umbenannt habe, wollte ich die Pending Changes schließlich einchecken. Die vom Gated Check-in ausgelösten builds schlugen jedoch fehl mit der Fehlermeldung:
„CSC (0,0)
Source file ‚xyz.cs‘ could not be found“

2016-09-30 15_19_56-Microsoft Team Foundation Server

Lösung:
Im Gated Check-in Fenster die Optionen aufklappen und „Bypass validation build and check in my changes directly (requires permissions)“ anhaken. Dann den Build via normalem MS Build Server Build starten. Offenbar hatte der Gated Check-in einige Codeänderungen nicht mitbekommen und daher fehlende Source files angemahnt.

Debug XAML Designer in Visual Studio 2015

In Visual Studio 2015 wird der XAML Designer jeder .XAML-Datei in seinem eigenen Prozess ausgeführt, wobei jeder den gleichen Namen XDesProc.exe tragen. Manchmal erscheint nur eine weiße Box oder eine Exception flackert kurz auf, aber zum Debuggen reicht das alles nicht. Eine zweite Visual Studio Instanz muss zum Debuggen hinzugezogen werden.

  • Alle „XDesProc.exe“ Prozesse im Task Manager beenden.
  • Zwei Visual Studio (genannt ‚VS A‘ und ‚ VS B‘) Instanzen starten.
  • VS A wird später den Designer ausführen. VS B wird dessen Exceptions abfangen bzw. die Ausführung durch die Breakpoints stoppen lassen.
  • In VS B mit Debug -> Window -> ‚Exception Setting‘ am besten alle Exceptions anhaken, damit keine durchschlüpfen kann. Oder man setzt in VS B entsprechende Breakpoints in die MainWindow.xaml.cs, um die Ausführung dann dort zu stoppen.
  • In VS B Debug -> ‚Attach to Process‘ klicken. Dann auf die Process-Spalte klicken, um rückwärts alphabetisch zu sortieren:

visual studio debug xaml viewer

Folgende zwei Schritte müssen möglichst schnell nacheinander ausgeführt werden:

  • In VS A auf das MainWindows.xaml doppelklicken
  • In VS B „Refresh“ drücken und auf den „XDesProc.exe“ attachen BEVOR die Exception in VS A geworfen wird / bzw. die Anwendung am Breakpoint angekommen ist.

Dank an meinen Kollegen Hendrik.

Batch-File: Tag, Monat und Jahr bestimmen

Für die Nutzer eines deutschen Windows kann man den heutigen Tag, Monat und Jahr folgendermaßen ermitteln:

set tag=%date:~0,2%
set monat=%date:~3,2%
set jahr=%date:~6,4%

set heute=%tag%_%monat%_%jahr%

Mit ECHO %date% wird „28.10.2015“ ausgegeben.
Hinter dem Doppelpunkt in der %date%-Variable wird entschieden, welches Stück aus %date% rausgeschnitten und der Variable zugewiesen wird.
Die erste Zahl ist der linke Rand des Rausgeschnittenen. Die zweite Zahl bestimmt die Anzahl der Stellen, die nach rechts gerückt wird, um den rechten Rand des Rausgeschnittenen zu finden. Aus 28.10.2015 wird also mittels ~3,2 „10“ rausgeschnitten.

Dieser Algorithums funktioniert nur, weil Windows bei einstelligen Tages- und Monatszahlen die erste Stelle mit 0 auffüllt. Für März wird aus 3 also 03 – die Tages-, Monats und Jahrespositionen ändern sich also nicht.