Ostatnio głowiłem się trochę dlaczego podczas budowania pewnych paczek nuget, nie jest brany pod uwagę target framework. Szukałem problemu prawie wszędzie tylko nie tam gdzie jego źrodło :)

Jak się okazuje, kiedy budujemy projekt dla kilku frameworków, MS Build stworzy i wykorzysta folder obj. Co to znaczy? To znaczy, że jak już coś raz z budowaliśmy pod .NET Framework 4.5 i jest to aktualne, to jak budujemy coś pod .NET Framework 4.0 to zostanie to olane, w sensie, zostanie wykorzystana wersja 4.5 bo jest aktualna i nie wymaga zmiany.

Rozwiązaniem problemu było po prostu odpalenie msbuild z przełącznikiem /t (target) mówiącym by przeczyścił i na nowo skompilował projekt:

msbuild (…) /t:Clean,Build

Gdzie Clean i Build chyba są dość zrozumiałe ;) W razie co można podać więcej targetów po przecinku.

Ogólnie taki mały przełącznik, a zmarnował mi 2h z życia. Może się więc komuś przyda :)