2013-01-08 11 views
10

Mam rozwiązanie Visual Studio 2008 i .NET Framework v3.5. Ostatnio przekonwertowałem na Visual Studio 2010 i .NET Framework v4.0.NET Framework migracji z v3.5 do v4.0

Aby przejść do .NET Framework v4.0, zrobiłem to za pomocą właściwości projektu i zakładki kompilacji, zmieniając cel na docelowy Framework v4.0 dla każdego projektu. Jednak jeśli mogę otworzyć pliku konfiguracyjnego projekt csproj widzę jest związane v3.5 tag:

<ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Xml" /> 
    <Reference Include="WindowsBase"> 
    <RequiredTargetFramework>3.0</RequiredTargetFramework> 
    </Reference> 
</ItemGroup> 

Chciałbym wiedzieć, dlaczego dla niektórych zawarte odniesienia odnosi się do v3.0, v3.5 jeśli projekt jest skierowany do .NET Framework v4.0. Dzieje się tak również w przypadku innych projektów, mimo że projekt jest kierowany do NET Framework v4.0.

System.Core jest kierowana do 3,5 WindowsBase jest kierowana do 3,0

+2

W ten sposób IDE wie, aby wyświetlić ikonę ostrzeżenia po wybraniu wczesnej wersji .NET. Funkcja, a nie błąd. –

Odpowiedz

2

odnosi się do tych samych wymagają 3.5 (na System.Core) i 3,0 (dla WindowsBase). W rzeczywistości nie jest to w 100% poprawne (patrz komentarz do tej odpowiedzi).

Do tej pory każda struktura .NET powyżej 2.0 jest w zasadzie biblioteką DLL, która znajduje się na górze 2.0. Na przykład, kilka lat i jedno zadanie temu potrzebowałem LINQ i Hashset <T> w .NET 2.0, ponieważ połowa moich użytkowników utknęła na Win2K, który nie obsługuje niczego powyżej .NET 2.0. Zlikwidowałem ponowną kompilację System.Core z Mono, mając docelowy poziom 2.0 i mogłem użyć nowszych funkcji.

Nie sądzę, że jest to coś, o co trzeba się martwić.

+0

Należy zauważyć, że oba elementy XML RequiredTargetFramework są również puste. Oznacza to, że nie ma żadnych odniesień, które są ukierunkowane na 3.5 lub 3.0. Jeśli chcesz, możesz ręcznie zmodyfikować plik rozwiązania i usunąć te linie. –

+0

@Ramhound: Dobra uwaga. Nigdy nie zaglądałem do plików csproj, więc nie wiedziałem o tym. –

+0

Spędziłem wiele dni w pracy z koniecznością ręcznej modyfikacji pliku rozwiązania z różnych powodów. Twoje pierwsze zdanie w tym przypadku nie jest w 100% poprawne. W przypadku takim jak to, 'System.Core' będzie wersją zawartą w .NET Framework 4.0 i' WindowsBase', która jest przeznaczona dla aplikacji WPF, również będzie .NET Framework 4.0 –

Powiązane problemy