El compilador de Visual Studio C# no nota un nombre de método cambiado

Tengo un problema realmente extraño en el programa ac#:

Tengo una interfaz que declara un método y una clase que implementa esta interfaz. Cuando cambio el nombre de los métodos (en la interfaz y en la implementación), Visual Studio compila el código, pero si ejecuto el código, obtengo un method not found excepción. Si elimino manualmente el dll de destino y vuelvo a compilar el proyecto/solución, todo funciona bien.

Sin embargo, hay muchos otros métodos y propiedades, también declarados en la misma interfaz e implementados en la misma clase. Si cambio el nombre de uno de ellos, ¡todo funciona bien!

¿Alguien tiene una idea, lo que esto puede ser?

 public interface INode{
    //...
    IEnumerable<INode> Ancestors();
    //...
 }
 public abstract class NodeBase : INode{
    // ...
    public IEnumerable<INode> Ancestors(){

    }
    // ...
 }

preguntado el 12 de junio de 12 a las 20:06

¿Obtiene alguna información con la salida detallada de msbuild? -

¿El montaje está en un proyecto diferente? Si es así, ¿agregó la referencia manualmente o usó la pestaña Proyectos para agregarla? -

@Adriano: Lo he activado, pero no he visto nada especial. Sin embargo, es la primera vez que miro esto y es realmente una gran cantidad de información. ¿Puede darme una pista de lo que debo tener en cuenta? -

@asawyer: la interfaz y la clase están en el mismo ensamblaje, sin embargo, la solución consta de varios proyectos, la mayoría de los cuales hacen referencia al ensamblaje del problema (es un proyecto de biblioteca). -

@HCL ¡No lo sé! "No se puede copiar un dll de dependencia en su carpeta de salida, elimínelo usted mismo" debería ser una buena pista de msbuild. LOL (para ser serio: supongo que las dependencias del proyecto están bien y copia local is verdadero). -

3 Respuestas

Al tratar de resolver el problema, Eliminé la referencia al ensamblaje del problema del proyecto de interfaz de usuario y luego la volví a agregar. A partir de este momento, el problema se ha ido..

Lamentablemente, no puedo decir cuál fue el motivo de este problema realmente extraño, y ahora ya no tengo la oportunidad de analizar el problema. Debe haber sido algo corrupto dentro del proyecto, sin embargo, no puedo imaginar qué podría haber sido, porque en realidad solo se trataba de una firma de método (independientemente de la posición en el código y el nombre del método).

Gracias a cualquiera que haya publicado una respuesta hasta ahora (+1), llevándome a una solución. ¡Espero nunca volver a ver este extraño comportamiento! Para aquellos que tienen el mismo problema: intente recrear las referencias al proyecto emisor.

Respondido el 12 de junio de 12 a las 21:06

Esto puede suceder cuando la referencia se agrega como un dll no a través de la pestaña del proyecto y puede ser bastante confuso. - un aserrador

@asawyer: la referencia se agregó a través de la pestaña de proyectos. También es interesante que solo UNA firma de método generó un problema. ¡Todos los demás cambios en los mismos archivos se compilaron correctamente! Fue realmente extraño. ¡Desde la primera versión de .net no había visto algo así! - HCL

Loco. He marcado esto como Favorito en caso de que vea que sucede en mi oficina. - un aserrador

¿Has intentado hacer una Build> Clean Solution/Project?

Respondido el 12 de junio de 12 a las 20:06

Sí, también la solución. Ningún cambio. Pero gracias por tu respuesta. - HCL

Tengo este problema todo el tiempo...

Por lo general, guardo, cierro VS, abro la solución y luego construyo. Este proceso mantiene el problema a raya por un tiempo.

Cuando "limpia" una solución, elimina todos los archivos compilados y temporales asociados con una solución. Asegura que la próxima compilación será desde cero.

Creo que el problema radica en que VS no construye correctamente la solución y algo se "atasca". También creo que hay extensiones para VS que ayudan a solucionar este problema.

Este artículo puede ser un poco extremo para lo que necesitas, pero puede que te resulte útil: http://www.neovolve.com/post/2010/08/02/Cleaning-a-VS2010-solution-with-a-sledgehammer.aspx

Respondido el 12 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.