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 :)