Con el lanzamiento de Visual Studio 2022, mi equipo está tratando de cambiar para usarlo en lugar de VS2019. La mayoría de nuestras soluciones se compilan sin problemas. Sin embargo, tenemos una aplicación que se desarrolló con .NET 4.8 y Visual Studio 2015 Shell (aislado). Esta aplicación no se compilará con éxito. Recibo los siguientes errores:
Error CS1747 No se pueden incrustar tipos de interoperabilidad del ensamblado 'envdte80, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' porque falta el atributo 'System.Runtime.InteropServices.GuidAttribute'.
Error CS1759 No se pueden incrustar tipos de interoperabilidad del ensamblado 'envdte80, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' porque falta el atributo 'System.Runtime.InteropServices.ImportedFromTypeLibAttribute' o 'System.Runtime.InteropServices. Atributo PrimaryInteropAssemblyAttribute'.
Verifiqué que la referencia EnvDTE80 tiene la propiedad Embed Interop Types configurada en False y Copy Local está configurada en True, al igual que cuando se compila correctamente la solución con VS2019.
¿Qué ha cambiado con VS2022 que podría causar este error?
Otra cosa que encuentro extraña es que los errores se refieren a la versión 17.0.0.0, pero la versión del paquete EnvDTE80 NuGet es 8.0.3.
Para la referencia de EnvDTE80.dll en VS2019...
Para la referencia de EnvDTE80.dll en VS2022...
¿Por qué el mensaje de error se refiere a la versión 17.0.0.0 cuando el proyecto hace referencia a v8.0.3? ¿Es este un problema de Visual Studio de 64 bits frente a un proyecto de 32 bits? ¿Es un problema del archivo .targets?