Pregunta Error de MSBuild "CSC: error CS2001: archivo de origen 'x' no se pudo encontrar" con los archivos vinculados después de actualizar a Visual Studio 2012


Después de actualizar automáticamente el archivo de proyecto para una aplicación web .Net 4.0 para trabajar con Visual Studio 2012 todo funcionó bien al principio, sin embargo, al compilar recibí muchos errores como este:

Descripción: No se pudo encontrar el archivo de origen '.. \ .. \ .. \ .. \ .. \ File Path'

Archivo: CSC

Y cuando intento construir usando MSBuild (pasando solo la ruta completa del proyecto, sin parámetros adicionales) en el "Indicador de comandos del desarrollador para VS2012", obtuve básicamente los mismos errores:

"CSC: error CS2001: archivo de origen 'x' no se pudo encontrar"

Todos los errores se refieren a Archivos vinculados (aspx, cs, etc.) ubicado en otros proyectos de aplicaciones web ubicados en una profundidad diferente en nuestro código Branch (es por eso que todos los '.... \' al comienzo de las rutas)

Para mí, parece un problema con el archivo Longitud, Tuve el mismo problema hace un tiempo cuando construí los proyectos en nuestro servidor de CI usando MSBuild, pude gestionarlo manipulando los archivos de proyecto antes de compilarlos usando un script personalizado sin la necesidad de mover la rama o reducir la profundidad de los proyectos, no tuve que mover nada, lo importante en ese momento era que los desarrolladores que usaban Visual Studio 2010 pudieran compilar todo sin problemas. Aprendí por esto que la compilación / compilación con MSBuild era diferente que con DevEnv / VS, y por ejemplo, MSBuild no admitía la construcción de proyectos de configuración y DevEnv sí.

Como esto está sucediendo ahora con VS 2012 / DevEnv 2012, además de que VS 2012 ya no admite proyectos de configuración (como msbuild), además de que VS / DevEnv tiene el mismo problema con la longitud del archivo, parece que VS 2012 finalmente usa msbuild bajo el capó o están más estrechamente integrados, sin embargo, no encontré ningún artículo para confirmar esto.

Cambiar la estructura de la sucursal / cambiar la profundidad de los proyectos no es una opción en este momento debido a varias razones (gran base de código, gran cantidad de proyectos, riesgo, tiempo, esfuerzo, etc.).

¿Alguien tiene una solución alternativa o una solución para este problema en Visual Studio 2012?

Saludos,

P.D .: Por cierto, ya revisé esta publicación Error de MSBuild con archivos vinculados pero como dije antes de cambiar los caminos, no es una opción en este momento.


32
2018-05-25 04:17


origen


Respuestas:


Intente obtener los Log Logs,

http://msdn.microsoft.com/en-us/library/vstudio/ms171470.aspx

parece que la tarea csc no pudo encontrar el archivo fuente. Una causa que importe el archivo incorrecto. por lo que debe editar el archivo del proyecto a través del editor de texto normal.


4
2017-11-28 16:00



Encontré una solución a este problema, cuando vinculó el archivo, su ruta relativa es reconocida por msbuild y vuelve de allí se convierte en tu camino en un largo camino; sin embargo, puedes cambiarlo en la definición del proyecto haciendo clic derecho / descargar el proyecto / y cambiar la ruta desde ../../../ a $(SolutionDir)/../.. hasta encontrar el archivo para vincular, tenga en cuenta: se extiende el carácter de 255 a 300 caracteres.


2
2017-12-16 22:37



Sé que hice esta pregunta hace un tiempo, pero por lo que vale, el enfoque que finalmente escogimos fue:

  • Ubicando los archivos que fueron reportados como demasiado largos.
  • Reduzca la longitud de la ruta completa de esos archivos, reduciendo la longitud del nombre y / o la longitud de la carpeta del contenedor o la reducción de la anidación de la carpeta nivel. Por lo tanto, se reduce la longitud de la ruta completa.
  • Actualice los enlaces de los archivos modificados (volver a vincular) en los proyectos dependientes.

Esto resolvió el problema con Visual Studio 2012 en las estaciones de trabajo de los desarrolladores y en nuestros servidores de CI / Deploy que usaban MSbuild.

Para mi escenario, este enfoque era menos arriesgado e implicaba menos esfuerzo que mover proyectos / soluciones completos para reducir el nivel de anidamiento de carpetas o reducir los nombres de las carpetas, y tener que actualizar todas las referencias del proyecto / soluciones dependientes.


1
2017-07-31 00:28



Ok, golpeé esto y lo resolví hoy. Lo encontré siguiendo un tutorial de msdn (https://msdn.microsoft.com/en-us/library/ms379563%28v=vs.80%29.aspx) y aquí está el comando que se rompió para mí:

csc /t:library /out:MyCodeLibrary.dll simpleType.cs

Dándome el mensaje

error CS2001: Source file 't:librabry' could not be found

Lo cual funcionó después de cambiar el comando original a lo siguiente:

csc /target:library /out:MyCodeLibrary.dll simpleType.cs

No estoy seguro de por qué la versión corta del indicador / target causa este error, pero no he encontrado ningún otro lugar en línea que indique esta causa específicamente, así que quise grabarlo aquí.


1
2018-06-04 21:25



  1. Compruebe que tiene la última versión de los archivos vinculados de los otros proyectos. Visual Studio NO los obtendrá automáticamente si pertenecen a otro proyecto.
  2. Verifique que las rutas vinculadas sean realmente correctas. Puede controlar a qué archivos VS.NET y MSBUILD intentan acceder con la ayuda de la herramienta SysInternals ProcMon (filtrar los nombres de los procesos y filtrar todos los éxitos)
  3. Si sospecha que la longitud de la ruta es el problema (esto también será visible en la herramienta ProcMon), puede intentar acortarlos vinculando la ruta absoluta (C: \ X \ Y \ Z) en lugar de una ruta relativa ( ...... \ Z). La ubicación de los archivos vinculados puede permanecer sin cambios.

0
2018-01-26 11:26



Mis 2 centavos para este problema ... En mi caso, tenía un archivo creado en un proyecto (es decir, ConfigModel) y tenía un enlace a este archivo en otro proyecto, pero cuando renombré el archivo ConfigModel en el primer proyecto para LoginModel para ejemplo, no cambió el nombre del enlace en el segundo proyecto que causaba este error.


0
2018-03-29 02:27



Este problema surgió cuando volví a una versión anterior de un repositorio de git. Aparentemente, no agregué el archivo del proyecto al repositorio, así que cuando revertió no revertió el archivo del proyecto también. Lo que hice para aclararlo fue excluir el archivo .cs perdido del proyecto haciendo clic en el archivo que faltaba en el proyecto Explorer. Fue fácil de encontrar ya que estaba marcado con un triángulo de advertencia. Luego reconstruye toda la solución.


0
2017-09-16 20:09