Beschreibung
Beim Kompilieren einer ASP.NET 1.1-Anwendung mit Microsoft Visual Studio .NET 2003 auf einem Windows 2000 Server via Terminal Services („Remote Desktop“, RDP) trat folgende Fehlermeldung auf:
CS0013: Unerwarteter Fehler beim Schreiben der Metadaten in die Datei ‚C:\…\obj\Release\MyDll.dll‘ — ‚Unbekannter Fehler‘.
In Englisch sollte das in etwa so lauten:
CS0013: Unexpected error writing metadata to file ‚C:\…\obj\Release\MyDll.dll‘ — ‚Unknown error‘.
Die Fehlermeldung trat bei einem Projekt auf, das bereits über ein Jahr erfolgreich kompilierte. Nach einer kleinen Codeänderung kam auf einmal diese Fehlermeldung.
Ursache
Die erwähnte „kleine Codeänderung“ war, daß ich eine Klasse erstellt hatte, die von einer anderen Klasse abgeleitet hat, welche in einer dritten Klasse als Unterklasse enthalten war.
Also so was wie das hier:
public class A { ... public class B { .... } ... } ... public class C : A.B { ... }
Scheinbar „verhaspelt“ sich der C#-Compiler da irgendwo. In anderen Fällen hat das selbe Prinzip auch schon oft funktioniert. Nur in diesem Fall hier aus irgendeinem Grund nicht.
Lösung
Nachdem ich die Klasse B „global“ gemacht hatte, kompilierte alles wieder:
public class A { ... } ... public class B { .... } ... public class C : B { ... }
Bin noch nie auf die Idee gekommen, eine neue Klasse von einer inneren Klasse abzuleiten. Wozu auch.
Diese Frage, lieber Sven, ist ja nach dem Schema „Wir haben immer schon auf Bäumen gelebt, warum sollen wir jetzt woanders leben“.
Die Antwort könnte doch sein: „Weil es manchmal elegant ist“.