2015-11-18 12 views
10

Konfiguruję nowy komputer i zainstalowałem VS2015. Kompilowanie projektu Obecnie pracuję nad wynikami w niepoprawnym kodzie (ILSpy tworzy nieskompilowane źródła). W VS2013 działało bez problemu, używając narzędzia ToolsVersion 12.Kompilowanie dla ToolsVersion 12 z Visual Studio 2015

Plik dziennika informuje mnie, że brakuje ToolsVersion 12, więc zainstalowałem to. Jednak niezależnie od tego, co robię lub ustawiam, ZAWSZE kompiluje przy użyciu ToolsVersion 14. Mogę ręcznie zadzwonić pod numer MSBuild.exe dostarczany z VS2013 (używa ToolsVersion 12) i kod jest poprawny. To samo z MSBuild.exe wysyłane z VS2015 (wykorzystuje ToolsVersion 14) powoduje, że kod INCORRECT. Więc muszę to VS2015 korzystać ToolSet 12.

MSDN mówi.

„Uruchamianie w Visual Studio 2013, wersja MSBuild Toolset jest taki sam jak numer wersji Visual Studio msbuild domyślnie Toolset w tym wizualne Studio i wiersz poleceń: niezależnie od wersji ToolSet określonej w pliku projektu. To zachowanie można przesłonić za pomocą flagi/ToolsVersion. Aby uzyskać więcej informacji, zobacz Przesłanianie ustawień narzędzi. "

Ustawienie takiego przy użyciu MSBuild ręcznie działa dobrze, ale jak ustawić to w VS 2015? BRAK zmiennych środowiskowych działa, zawsze używa zestawu narzędzi 14!

+1

Trzeba będzie odinstalowanie .NET 4.6 tak, że kompilatory Roslyn oparte zostają usunięte. W przeciwnym razie kompilator C# może nadal dostarczać te same nieprawidłowe zestawy. Ale ogólnie rzecz biorąc, ILSpy nie działa dobrze z kompilowanymi zestawami Roslyn. Więc twoje złoenia mogą być rzeczywiście poprawne, tylko ILSpy nie może ich zrozumieć. Możesz sprawdzić listę błędów ILSpy, aby dowiedzieć się więcej na ten temat. –

+0

Niestety, Twoja sugestia nie rozwiązuje problemu! Problem polega na tym, że VS używa MSBuild 14. Jak już wspomniałem wcześniej, jeśli uruchomiłem MSBuild z folderu 12, wszystko jest w porządku. Zmieniłem nazwę na folder 14, a teraz VS nie ładuje projektów, więc szuka 14 folderów. Rozwiązanie jest proste, jeśli ktoś wie, jak zmienić/ustawić zmienną $ (MSBuildToolsVersion). Jest to oczywiście ustawione na 14, a atrybut ToolsVersion nie jest już honorowany (jak stwierdza firma Microsoft, bez oferowania działającego rozwiązania zastępczego). Zmieniłem nazwę folderu 14 na 12, co skutkuje innymi awariami ... ARGH! – user1029883

+0

Nie jestem pewien, dlaczego zostało to odrzucone. Pytanie nadal wydaje się być "Jak uzyskać VS2015 do budowania z wcześniejszej wersji ToolsVersion?" –

Odpowiedz

3

Wyjeżdżam tej odpowiedzi tutaj w przypadku pomaga nikomu jednak nie pomogło oryginalnego plakatu, jak według @ user1029883 to nie działa, gdy jest zainstalowany VS2015 z 12,0 narzędzia do budowania pakietów (patrz @ komentarz alexandrul poniżej) zamiast wielu wersji Visual Studio: przepraszam.


Niestety, nie wydaje się być proste sposób to zrobić. Istnieje jednak fiddly sposób:

  • ustawić zmienną środowiskową MSBUILDLEGACYDEFAULTTOOLSVERSION
  • Zapewnienie atrybut w najwyższego poziomu Project pierwiastka we wszystkich plikach projektu ToolsVersion jest ustawiona na żądaną ToolsVersion.

Zobacz Overriding ToolsVersion Settings page on MSDN

+0

Próbowałem już wcześniej, to nie działa. Poniżej mojego głównego pliku projektu i zmiennej środowiskowej: MSBUILDLEGACYDEFAULTTOOLSVERSION 1 – user1029883

+0

Pardon moja niewiedza: jak zainstalować toolsversion 12.0 bez instalowania VS2013? –

+0

@GuyBoltonKing http://www.microsoft.com/en-us/download/details.aspx?id=40760 "Jeśli na komputerze nie masz zainstalowanego Visual Studio, możesz użyć Build Tools 2013 do zbudowania aplikacji zarządzanych Kompilatory Visual Basic i C# są również uwzględnione w tym pobieraniu (we wcześniejszych wersjach narzędzia te były zawarte w autonomicznym systemie .NET Framework). " – alexandrul