Utfordringer med å konvertere et C/C++-prosjekt fra VS2019 til VS2022 (ResolveNuGetPackageAssets-edition)
Ønsker du å oppgradere til den nyeste utgaven av Visual Studio? Da kjenner du sannsynligvis den snikende følelsen av at dette kanskje ikke vil fungere med en gang!
Nylig ønsket jeg å oppgradere et eldre C/C++-prosjekt fra å kompilere- og bygge fint i Visual Studio 2019, til den nyeste og beste Visual Studio 2022.
Den første gjenoppbyggingen genererte følgende melding som jeg aldri har sett før:
Klikk på bildet ovenfor for et bilde i full størrelse
Feilmeldingen kommer fra MSBuild og NuGet, noe jeg ikke er så vant til å se når jeg jobber med C/C++-prosjektene mine. NuGet er en pakkebehandler for Microsofts utviklingsplattform, inkludert .NET. Men hei, dette er ikke en .NET-løsning!
Som alltid når man møter utfordringer som dette, tar man turen til internett. ChatGPT klarte ikke helt å fange opp problemet, selv om det ga meg gode råd om hvordan jeg skulle sjekke og oppdatere eventuelle NuGet-pakker (som det ikke var noen av), sjekke og sette målrammeverket og andre typiske .NET-relaterte ting.
En av de beste sidene for utviklerspørsmål er StackOverflow, og nok en gang leverte den. Svaret finner du her https://stackoverflow.com/a/73626823, Borislav Ivanov kommer med en løsning som fungerer for prosjektet. Merk at prosjektene mine allerede bruker Directory.Build.props-filen for å kontrollere byggeinnstillingene:
Linjene fra artikkelen ovenfor er:
< /ItemGroup>
native,Version=v0.0
< /PropertyGroup>
... og jeg plasserer dem inne i Directory.Build.props-filen på øverste nivå. Merk at min Directory.Build.props er plassert på øverste C/C++-katalognivå, noe som betyr at alle C/C++-prosjektene mine er lenger ned i kataloghierarkiet. Jeg vil ikke ha denne endringen i mine C#/.NET-prosjekter, siden NuGet er i bruk der.
Nå bygger den gamle VS2019-koden fint i VS2022!