Kierowanie na .NET Framework 4.5 za pośrednictwem programu Visual Studio 2010


169

Dzisiaj zainstalowałem .NET Framework 4.5 na moim komputerze, spodziewając się, że będę mógł go używać z Visual Studio 2010, ponieważ jest to tylko drobna aktualizacja, która nie powinna stwarzać problemów dla Visual Studio 2010. Niestety nie, nawet ręcznie usuwając niektóre 4.0 i dodanie odpowiednich zespołów 4.5 spowodowało, że oryginalne zestawy 4.0 nadal są przywoływane w projekcie.

Czy jest możliwe kierowanie na wersję 4.5 z Visual Studio 2010, a jeśli tak, to w jaki sposób? Bardzo chciałbym użyć wstążek ...


Należy przeprowadzić uaktualnienie do programu Visual Studio 2012 dla obsługi platformy .NET w wersji 4.5.
Arran

Dowiedziałem się o tym ograniczeniu, kiedy próbowałem użyć metody System.Threading.Tasks.Task.Run () w aplikacji konsoli VS 2010. Ta metoda nie pojawia się w klasie Task, jeśli projekt jest przeznaczony dla .Net Framework 4.0, a następnie zdajesz sobie sprawę, że VS2010 nie może być przeznaczony dla .Net Framework 4.5, jeśli chcesz.
RBT

Odpowiedzi:


194

Każda wersja programu Visual Studio starsza niż Visual Studio 2010 jest powiązana z określoną platformą .NET Framework. (VS2008 to .NET 3.5, VS2005 to .NET 2.0, VS2003 to .NET1.1) Program Visual Studio 2010 i nowsze umożliwiają kierowanie na wcześniejsze wersje platformy, ale nie można ich używać w przyszłych wydaniach. Aby korzystać z platformy .NET 4.5, należy używać programu Visual Studio 2012.


9
Nie do końca prawda - .NET 3.0 został wydany między wersjami VS i może być używany w VS2005.
Sly Gryphon

9
Cóż za zagadka: migracja do vs2012 +, aby wykorzystać niuanse .net 4.5 kosztem utraty ukochanego projektu instalacyjnego vs2010 w celu wdrażania instalatorów msi ... „upgrade” wydaje się bardziej jak
funkcja sidegrade

6
@ecoe - istnieje rozszerzenie VS 2013, które przywraca typ projektu konfiguracji i wdrażania: visualstudiogallery.msdn.microsoft.com/…
ajawad987

2
To jest niepoprawne. Nie musisz uaktualniać, aby korzystać z tej funkcji. Wszystko, co musisz zrobić, to dodać nowe odniesienie, a następnie przejść do folderu .NET 4.5: C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \\. Net Framework \ 4.5. Znajdziesz tam odniesienie. Po prostu dodaj i działa
Hermes Trismegistus

2
@HermesTrismegistus w VS 2010 Klikam „Target Framework = Install Other Frameworks” i przenosi mnie do witryny internetowej microsoft.com/net/download/visual-studio-sdks Nie pozwala mi przejść do żadnego folderu. Co powinienem zrobić. Muszę być w stanie celować w 4,5 z VS 2010. Tks.
Echeban

67

Istnieją dość ograniczone scenariusze, w których mogę wymyślić, gdzie byłoby to przydatne, ale załóżmy, że nie możesz zdobyć funduszy na zakup VS2012 lub czegoś podobnego. Jeśli tak jest, a masz Windows 7+ i VS 2010, możesz użyć następującego hacka, który przygotowałem, który wydaje się działać (ale nie wdrożyłem jeszcze w pełni aplikacji przy użyciu tej metody).

  1. Utwórz kopię zapasową pliku projektu !!!

  2. Pobierz i zainstaluj Windows 8 SDK, który zawiera .NET 4.5 SDK.

  3. Otwórz swój projekt w VS2010.

  4. Utwórz plik tekstowy w swoim projekcie o nazwie Compile_4_5_CSharp.targetso następującej zawartości. (Lub po prostu pobierz tutaj - pamiętaj, aby usunąć rozszerzenie „.txt” z nazwy pliku):

    <Project DefaultTargets="Build"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        <!-- Change the target framework to 4.5 if using the ".NET 4.5" configuration -->
        <PropertyGroup Condition=" '$(Platform)' == '.NET 4.5' ">
            <DefineConstants Condition="'$(DefineConstants)'==''">
                TARGETTING_FX_4_5
            </DefineConstants>
            <DefineConstants Condition="'$(DefineConstants)'!='' and '$(DefineConstants)'!='TARGETTING_FX_4_5'">
                $(DefineConstants);TARGETTING_FX_4_5
            </DefineConstants>
            <PlatformTarget Condition="'$(PlatformTarget)'!=''"/>
            <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        </PropertyGroup>
    
        <!-- Import the standard C# targets -->
        <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
    
        <!-- Add .NET 4.5 as an available platform -->
        <PropertyGroup>
           <AvailablePlatforms>$(AvailablePlatforms),.NET 4.5</AvailablePlatforms>
        </PropertyGroup>
    </Project>
    
  5. Rozładuj swój projekt (kliknij prawym przyciskiem myszy -> rozładuj).

  6. Edytuj plik projektu (kliknij prawym przyciskiem myszy -> Edytuj * .csproj).

  7. Wprowadź następujące zmiany w pliku projektu:

    za. Zastąp domyślnąMicrosoft.CSharp.targets plikiem docelowym utworzonym w kroku 4

    <!-- Old Import Entry -->
    <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
    
    <!-- New Import Entry -->
    <Import Project="Compile_4_5_CSharp.targets" />
    

    b. Zmień domyślną platformę na.NET 4.5

    <!-- Old default platform entry -->
    <!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
    
    <!-- New default platform entry -->
    <Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
    

    do. Dodaj AnyCPUplatformę, aby umożliwić kierowanie na inne platformy, jak określono we właściwościach projektu. Należy to dodać tuż przed pierwszym <ItemGroup>tagiem w pliku

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. Zapisz zmiany i zamknij *.csproj plik.

  9. Wczytaj ponownie projekt (kliknij prawym przyciskiem myszy -> Wczytaj ponownie projekt).

  10. W menedżerze konfiguracji (Build -> Configuration Manager) upewnij się, że dla Twojego projektu jest wybrana platforma „.NET 4.5”.

  11. Pozostając w menedżerze konfiguracji, utwórz nową platformę rozwiązań dla „.NET 4.5” (możesz oprzeć ją na „Dowolny procesor”) i upewnij się, że dla rozwiązania wybrano opcję „.NET 4.5”.

  12. Zbuduj swój projekt i sprawdź, czy nie ma błędów.

  13. Zakładając, że kompilacja została ukończona, możesz sprawdzić, czy rzeczywiście celujesz w 4.5, dodając odwołanie do określonej klasy 4.5 do kodu źródłowego:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. W przypadku kompilowania przy użyciu platformy „.NET 4.5” kompilacja powinna się powieść. Podczas kompilacji na platformie „Any CPU” powinien pojawić się błąd kompilatora:

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    

3
to jest krazy, nawet gdyby zadziałało, czy elementy interfejsu użytkownika, takie jak projektant wstążki, działałyby bez mnóstwa błędów XAML i innych błędów? srsly po prostu uaktualnij.
Anonimowy typ

1
Oprócz odpowiedzi Davida Woodwarda dodałem: <OutputPath>bin\</OutputPath>do pierwszej PropertyGroup, kiedy wystąpił poniższy błąd: Właściwość OutputPath nie jest ustawiona dla projektu „nazwa projektu”.
mparkuk

To rzeczywiście działa. Ale używam go tylko po to, aby po zainstalowaniu .NET Framework 4.5.1 móc dalej uruchamiać Moles na VS2010.
Conrad Clark

1
Nie byłem w stanie dowiedzieć się, jak pomyślnie wykonać krok 11, „... utworzyć nową platformę rozwiązań ...”, ale stwierdziłem, że instrukcje zakończyły się pomyślnie, jeśli krok 11 został zignorowany.
Tony Pulokas

8

FYI, jeśli chcesz utworzyć pakiet instalatora w VS2010, niestety jest on przeznaczony tylko dla .NET 4. Aby obejść ten problem, musisz dodać NET 4.5 jako warunek uruchomienia.

Dodaj następujące elementy do warunków uruchamiania instalatora (prawy przycisk myszy, widok, warunki uruchamiania).

W polu „Wyszukaj komputer docelowy” kliknij prawym przyciskiem myszy i wybierz opcję „Dodaj wyszukiwanie rejestru”.

Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release

Dodaj nowy „Warunek uruchomienia”:

Condition: REGISTRYVALUE1>="#378389"
InstallUrl: http://www.microsoft.com/en-gb/download/details.aspx?id=30653
Message: Setup requires .NET Framework 4.5 to be installed.

Gdzie:

378389 = .NET Framework 4.5

378675 = .NET Framework 4.5.1 zainstalowany z systemem Windows 8.1

378758 = .NET Framework 4.5.1 zainstalowany w systemie Windows 8, Windows 7 SP1 lub Windows Vista SP2

379893 = .NET Framework 4.5.2

Opis warunków uruchomienia: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx


3

Miałem problemy z integracją VS2010 / DNFW 4.5 i wreszcie udało mi się to. Począwszy od programu VS 2008, wprowadzono pamięć podręczną zestawów, która jest używana przez program Visual Studio o nazwie „Zestawy referencyjne”. Ta pamięć podręczna plików dla programu VS 2010 znajduje się w lokalizacji \ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0. Program Visual Studio ładuje zestawy platformy z tej lokalizacji zamiast z katalogu instalacyjnego platformy. Kiedy Microsoft mówi, że VS 2010 nie obsługuje DNFW 4.5, oznacza to, że ten katalog nie jest aktualizowany po zainstalowaniu DNFW 4.5. Po zastąpieniu plików w tej lokalizacji zaktualizowanymi plikami DNFW 4.5, przekonasz się, że VS 2010 będzie szczęśliwie działał z DNFW 4.5.


0

Z innego wyszukiwania. Pracował dla mnie!

„Możesz używać programu Visual Studio 2010 i obsługuje go, pod warunkiem, że Twój system operacyjny obsługuje .NET 4.5.

Kliknij prawym przyciskiem myszy rozwiązanie, aby dodać odwołanie (tak jak robisz). Gdy pojawi się okno dialogowe, wybierz przeglądaj, a następnie przejdź do następującego folderu:

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .Net Framework \ 4.5

Znajdziesz go tam. "


6
W zdaniu „Znajdziesz to tam”, czym jest „to”? Który plik w tym folderze wybieramy? Czy któryś z nich pozwoli nam wybrać .net 4.5 w VS 2010?
Jeff Roe

Znajdziesz zestawy przestrzeni nazw. Możesz dodać dowolny, który chcesz. Na przykład musiałem użyć metody pracy z plikami ZIP. Znalazłem dll „System.IO.Compression.dll” i dodałem go do mojego projektu. Następnie mógłbym jawnie wymienić przestrzeń nazw w moim kodzie i użyć potrzebnych metod.
Hermes Trismegistus

1
To nie działa na mnie. Jeśli usuniesz odniesienie do, powiedzmy, System, a następnie przejdziesz do .Net 4.5 System.dll i dodasz, że jako odniesienie, VS nadal wybiera odpowiedź 4.0 System.dll Capt Nasty na tej stronie działa dla mnie, np. System.dll z C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6 i upuść go na górze pliku System.dll w C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0. Pamiętaj jednak, że jest to nieprzyjemny hack i może mieć niezamierzone konsekwencje.
Jinlye
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.