Rozwiązywanie problemów z błędami określania wartości docelowej .NET Framework
Dotyczy: Visual Studio
W tym temacie opisano błędy MSBuild , które mogą wystąpić z powodu problemów z odwołaniem i sposobu rozwiązywania tych błędów.
Odwoływanie się do projektu lub zestawu, który jest przeznaczony dla innej wersji platformy .NET
Można tworzyć aplikacje odwołujące się do projektów lub zestawów, które są przeznaczone dla różnych wersji platformy .NET. Można na przykład utworzyć aplikację, która jest przeznaczona dla platformy .NET 6, ale odwołuje się do zestawu przeznaczonego dla platformy .NET Core 3.1. Nie można jednak ustawić odwołania w projekcie, który jest przeznaczony dla wcześniejszej wersji platformy .NET, na projekt lub zestaw przeznaczony dla platformy .NET 6. Oto przykład błędu, który może wystąpić w tym przypadku:
error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.
Aby rozwiązać ten problem, upewnij się, że aplikacja jest przeznaczona dla wersji platformy .NET zgodnej z wersją przeznaczoną dla projektów lub zestawów, do których odwołuje się aplikacja.
Ponowne kierowanie projektu do innej wersji platformy .NET
Jeśli zmienisz docelową wersję platformy .NET dla aplikacji, program Visual Studio zmieni niektóre odwołania, ale może być konieczne ręczne zaktualizowanie niektórych odwołań. Na przykład jeden z wymienionych wcześniej błędów może wystąpić, jeśli zmienisz aplikację na docelową platformę .NET Core 3.1, a aplikacja ma odwołania, zasoby lub ustawienia, które opierają się na platformie .NET 6.
Aktualizowanie odwołań w app.config
Aby obejść ustawienia aplikacji w aplikacjach .NET Framework, wykonaj następujące kroki:
- Otwórz Eksplorator rozwiązań.
- Wybierz pozycję Pokaż wszystkie pliki, a następnie edytuj plik app.config w edytorze XML programu Visual Studio.
- Zmień wersję w ustawieniach, aby była zgodna z odpowiednią wersją platformy .NET. Na przykład można zmienić ustawienie wersji z 4.0.0.0 na 2.0.0.0.
Podobnie w przypadku aplikacji, która dodała zasoby, wykonaj następujące kroki:
- Otwórz Eksplorator rozwiązań.
- Wybierz pozycję Pokaż wszystkie pliki.
- Rozwiń węzeł Mój projekt (Visual Basic) lub Właściwości (C#), a następnie edytuj plik Resources.resx w edytorze XML programu Visual Studio.
- Zmień ustawienie wersji z 4.0.0.0 na 2.0.0.0.
Aktualizowanie zasobów
Jeśli aplikacja ma zasoby, takie jak ikony, mapy bitowe lub ustawienia, takie jak parametry połączenia danych, możesz również usunąć ten błąd, usuwając wszystkie elementy na stronie Ustawieniaprogramu Project Projektant, a następnie odczytując wymagane ustawienia.
Ponowne kierowanie projektu do innej wersji platformy .NET i odwołania nie są rozpoznane
W przypadku ponownego skierowania projektu do innej wersji platformy .NET odwołania mogą w niektórych przypadkach nie zostać prawidłowo rozpoznane. Jawne w pełni kwalifikowane odwołania do zestawów często powodują ten problem, ale można go rozwiązać, usuwając odwołania, które nie są rozwiązywane, a następnie dodając je z powrotem do projektu. Alternatywnie możesz edytować plik projektu, aby zastąpić odwołania. Najpierw usuń odwołania do następującego formularza:
<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
Następnie zastąp je prostym formularzem:
<Reference Include="System.ServiceModel" />
Uwaga
Po zamknięciu i ponownym otwarciu projektu należy go ponownie skompilować, aby upewnić się, że wszystkie odwołania zostaną prawidłowo rozpoznane.