Rozwiązywanie problemów z błędami obiektów docelowych programu .NET Framework
Dotyczy: Visual Studio
W tym temacie opisano błędy programu MSBuild , które mogą wystąpić z powodu problemów referencyjnych i sposobu rozwiązywania tych błędów.
Odwołanie do projektu lub zestawu przeznaczonego dla innej wersji platformy .NET
Można tworzyć aplikacje odwołujące się do projektów lub zestawów przeznaczonych dla różnych wersji platformy .NET. Możesz 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 przeznaczonym dla starszej wersji platformy .NET na projekt lub zestaw przeznaczony dla platformy .NET 6. Oto przykład błędu, który może zostać wyświetlony 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ą, która jest przeznaczona dla projektów lub zestawów, do których odwołuje się aplikacja.
Ponownie skierować projekt 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 wcześniej wymienionych 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 pliku 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 odpowiadała odpowiedniej wersji platformy .NET. Można na przykład zmienić ustawienie wersji z 4.0.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 lub mapy bitowe lub ustawienia, takie jak parametry połączenia danych, możesz również usunąć błąd, usuwając wszystkie elementy na stronie Ustawienia projektanta projektu, a następnie odczytując wymagane ustawienia.
Ponowne skierowanie projektu do innej wersji platformy .NET i odwołania nie są rozwiązywane
Jeśli ponownie skierować projekt do innej wersji platformy .NET, odwołania mogą nie zostać poprawnie rozwiązane w niektórych przypadkach. 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 16.
Po zamknięciu i ponownym otwarciu projektu należy go również ponownie skompilować, aby upewnić się, że wszystkie odwołania zostały poprawnie rozwiązane.