Als ich heute eine kleine Windows-Forms-Anwendung bauen wollte, die ein paar Datenbank-Daten-Migrations-Aufgaben unabhängig von unserer Web-Anwendung ausführen soll, stieß ich beim Versuch, die zuvor per TDD entwickelte und in einer zentralen Assembly (“Generic.Core”) enthaltene Kernmethode für die Migration aufzurufen, auf den im Titel genannten Fehler. VisualStudio 2010 zeigte als Hilfe nur ein Popup an, welches implizierte, dass die Referenz auf die Assembly an dieser Stelle tatsächlich nicht berücksichtigt wird (siehe Screenshot).
Ein wenig verzweifelt habe ich dann den referenzierenden Code erstmal auskommentiert und nochmal versucht zu bauen, und siehe da, ich bekam eine deutlich hilfreicherere Fehlermeldung zu sehen (genauer gesagt 8 Stück):
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3253: The referenced assembly "C:\Projects\Camping.info\Generic.Core\bin\Debug\Generic.Core.dll" could not be resolved because it has a dependency on
"System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client".
Please remove references to assemblies not in the targeted framework or consider retargeting your project.
Die anderen 7 Warnungen beschweren sich ebenso über vermeintlich referenzierte 4.0-er Versionen verschiedener System.*-Assemblies.
Tatsächlich war in dem neuen Projekt das Target-Framework auf v4.0 Client Profile gesetzt, wessen ich gar nicht bewusst war, allerdings stimmt ein anderer Teil der Fehlermeldung nicht, nämlich der, dass Generic.Core.dll eine Referenz auf “System.Web, Version=4.0.0.0” hätte. Generic.Core ist auf .NET Framework 3.5 getargetted. Wie dem auch sei, der Wechsel des Target-Frameworks auf entweder 3.5 oder 4.0 - jedoch ohne das Client Profile – behob den Fehler und das Projekt kompiliert nun erfolgreich.
Happy Coding,
Oliver