Napisałem mały skrypt MSBuild do zbudowania mojego projektu na wielu wersjach. Po uruchomieniu go z wiersza polecenia programu VS2012 działa, nie otrzymuję żadnych błędów ani wyjątków. Jednak kiedy porównuję produkowane zespoły, są one identyczne. Czy coś jest nie tak w moim scenariuszu?Czy mój skrypt kompilacji służący do kierowania na wiele struktur docelowych działa poprawnie?
<Target Name="Build">
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net45;TargetFrameworkVersion=v4.5" />
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net40;TargetFrameworkVersion=v4.0" />
<MSBuild Projects=".\WcfClientBase\WcfClientBase.csproj"
Properties="Configuration=Release;OutputPath=.\BuildArtifacts\net35;TargetFrameworkVersion=v3.5" />
</Target>
Mam zainstalowany VS2012 Professional. Zauważyłem także, że .NET 4.5 nie ma własnego pliku MSBuild.exe. Czy używa się wersji z wersji 4.0?
Aktualizacja
Zbudowałem go z Visual Studio dla każdej wersji i wszystkie zespoły są różne. Coś jest nie tak z moim scenariuszem. Celowo pomyłkowo wprowadziłem nazwę parametru TargetFrameworkVersion, ale wciąż budowałem i produkowałem te same wyjścia. Być może nie jest w stanie zastąpić tego parametru z pliku projektu lub są inne parametry, których mi brakuje. Więcej pomysłów?
wystarczy użyć ILMerge zmienić NET 2 wykonywalny do .NET 4; p Pamiętaj, że punkt wejścia dyktuje wersji wykonania. W moim przypadku wszystkie zespoły są wbudowane w system .NET 2 i używają AnyCPU. Następnie używam ILMerge i corflags do wygenerowania zestawu 4 plików wykonywalnych dla wersji .NET i kombinacji bitness. Działa uroku (w moim przypadku specjalnie dla ngen na wszystkich 4 tych konfiguracjach). – leppie
Jak się masz porównanie? Czy porównujesz bajt-by-bajt? –
@splatteredbits yes –