Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

261
Vistas
Visual Studio 2015/C# 6/Roslyn no puede compilar comentarios XML en el proyecto PCL

Acabo de instalar la Community Edition de Visual Studio 2015 (RTM) recién lanzada y estoy intentando que mi proyecto de código abierto funcione en VS2015 y C# 6.0.

Algunos de mis .cs se comparten entre proyectos. De esta forma, puedo crear tanto una versión PCL (con funcionalidad limitada) como una versión "completa" de la biblioteca central.

Sin embargo, por algún motivo, algunos archivos de código se compilan correctamente en el proyecto completo, pero fallan cuando se compilan en el proyecto PCL (donde todo se compila en C# 5 y Visual Studio 2013). Parece que el compilador no puede resolver una cref en un comentario XML al crear la versión PCL. Aquí hay un ejemplo de código simplificado que falla en mi máquina:

 /// <summary></summary> public class A { // Compile error on next line: /// <summary><see cref="Y(Type)"/>.</summary> public void X() { } /// <summary></summary> /// <param name="x"></param> public void Y(Type x) { } /// <summary></summary> /// <param name="i"></param> public void Y(int i) { } }

El error de compilación que estoy recibiendo es:

CS1580 Tipo de parámetro no válido Escriba en el atributo cref de comentario XML: 'Y(Type)' SimpleInjector.PCL

Sin embargo, lo extraño es que la compatibilidad con IntelliSense en los comentarios XML (¡Guau! ¡Ahora tenemos IntelliSense en los comentarios XML!) realmente funciona, y el método Y(Type) se puede seleccionar a través de la lista desplegable. Pero después de seleccionar esto, se genera un error de compilación (solo en PCL).

Mi pregunta, por supuesto, es ¿cómo solucionar esto? ¿Es este un problema común? ¿Podría la configuración del proyecto tener algo que ver con esto? ¿Es esto un error conocido?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

David Kean , un desarrollador del equipo de lenguajes C#/VB, respondió bastante rápido en Twitter e investigó un poco sobre esto. Me informó que esto es, de hecho, un error y una limitación conocida en Roslyn. Después de la investigación, informó el problema en Github aquí y aquí .

Básicamente, hay dos problemas aquí que juntos causaron que me quedara atascado:

  1. cref a los miembros públicos se vuelven ambiguos cuando un miembro interno también está en el alcance. En el caso de Type , parece que hay un tipo interno llamado Type , pero diferente al System.Type público. Aunque este Type de tipo interno no existe para mi código, sí existe para Roslyn, y Roslyn se confunde.
  2. El mensaje de error no incluye referencias completas en CS0419 para que sea menos confuso. Debido a que el mensaje de error simplemente dice "Tipo no válido para el tipo de parámetro en el atributo cref de comentario XML", me resultó difícil adivinar cuál era el problema real.

La solución actual para este problema es calificar completamente los tipos como este:

 /// <summary><see cref="Y(System.Type)"/>.</summary> public void X() { }

Nota: Lo mismo vale para Assembly . Deberá calificar completamente ese tipo como System.Reflection.Assembly .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda