2012-03-28 8 views
6

Estoy intentando crear un proyecto en teamcity. Hará el pago de TFS y los archivos están localmente en el servidor de compilación. Si funciono manualmente el comando de construcción en el servidor funciona:teamcity building project Error al iniciar MSBuild.exe. Caracteres ilegales en la ruta

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\myproj\myproj.csproj /t:build 

Dentro TeamCity que tienen un paso de generación de MSBuild:

el camino fie de construcción es: Dev \ Dev \ proyecto \ miproyecto \ miproyecto. csproj" directorio de trabajo se deja en blanco versión mbuild: microsoft .NET Framework 4.0 msbuild toolsversion: 4.0 plataforma de ejecución: X86 objetivos: he intentado construir "construir" ya la izquierda línea de comandos en blanco params deja en blanco

si creo una tarea de compilación de línea de comando y ejecuto la línea de comando anterior, funciona. No estoy seguro de las diferencias que existen entre la línea de comandos y la tarea msbuild dentro de teammcity.

EDITAR

He intentado algunas variaciones en el directorio de trabajo:

La ruta de salida en el proyecto se establece en .. \ Build \ Tools \ miproyecto \

Así que tienen establece el directorio de trabajo en teamcity para: Dev \ Dev \ proyecto \ Build \ Tools \ myproj \

Esto no ayudó.

Aquí está la salida exacta de TeamCity:

Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe /workdir:C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\Build\Tools\myproj /msbuildPath:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
in directory: C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\Build\Tools\myproj 


Failed to start MSBuild.exe. Illegal characters in path. 
System.ArgumentException: Illegal characters in path. 
    at System.IO.Path.CheckInvalidPathChars(String path) 
    at System.IO.Path.IsPathRooted(String path) 
    at JetBrains.TeamCity.Utils.FileUtil.MakeFullPath(String path, String workDir) in   c:\BuildAgent\work\c2314fd21f15dc97\src\Utils\src\FileUtil.cs:line 48 
    at JetBrains.BuildServer.MSBuildBootstrap.RunArgs.get_ProjectFile() in  c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap\src\RunArgs.cs:line 156 
    at  JetBrains.BuildServer.MSBuildBootstrap.Impl.MSBuildBootstrapFactory.Create(IClientRunArgs  args) in  c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap.Core\src\Impl\MSBuildBootstrapFact ory.cs:line 29 
    at JetBrains.BuildServer.MSBuildBootstrap.Program.Run(String[] _args) in  c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap\src\Program.cs:line 67 
+0

Especifique el directorio de trabajo de compilación – KMoraz

+0

¿Ha comprobado el registro de compilación del comando exacto en el que se está ejecutando la ciudad del equipo? –

Respuesta

1

intentar editar la configuración de generación y quitar las comillas de la ruta del archivo Construir opción.

Si usted tiene:

"Dev \ Dev \ proyecto \ miproyecto \ myproj.csproj"

Sólo vamos:

Dev \ Dev \ proyecto \ miproyecto \ myproj.csproj

Espero que esta ayuda.

0

Esta pregunta parece muy similar:

What's the illegal character in this string ? I'm getting MSBUILD : error MSB3095

Además de esta cuestión, echar un vistazo a:

What is a dll.refresh file in ASP.Net?

Sobre esta cuestión, esta respuesta es de interés:

En un proyecto ASP.NET, addi ng una referencia basada en archivo agregará un archivo .refresh en la carpeta Bin. Cuando el proyecto se encuentra bajo el control source , este archivo se agrega al control de origen. * .dll.refresh archivos que ensucian el directorio bin.Cada vez que agrega una referencia externa , encontrará un archivo dll.refresh al lado. Estos archivos dll.refresh son una excepción a la regla, y deben ir al en el control de código fuente. Es la única forma en que su proyecto web sabrá dónde viven sus referencias en .

Si no tiene esto en control de fuente, podría explicar el problema que está viendo. Parece que el mensaje de error es potencialmente engañoso y esto está relacionado con una referencia que no se resuelve en la máquina de compilación.

Con respecto a por qué funciona desde la línea de comandos, ¿es posible que cuando construya desde TeamCity esté limpiando el directorio de salida antes de compilar? Si al ejecutar desde la línea de comandos los binarios ya han sido emitidos desde la construcción parcialmente fallida a los que se hace referencia como referencia de archivo, esto tendrá éxito.

Para identificar si este es el caso, si realiza un pago completamente limpio y luego ejecuta el paso MSBuild desde la línea de comandos, ¿sigue teniendo éxito?

1

En TeamCity, cuando usa parámetros para su ruta, o una parte de la ruta, es fácil pegarla en una carpeta y no notar que tiene una Nueva línea o Retorno de carro al final (como descubrí de una experiencia dolorosa). Podría aparecer en TeamCity como el valor de un parámetro:

\ Carpeta1 \ NewlyPastedInFolder \ ExistingFolder \ BuildScripts

Lo que parece un valor de palabra envuelta en realidad es un parámetro con un retorno de carro en el medio. Verifíquelo editándolo y vea si puede eliminar el carácter para convertirlo en un valor de línea única.

Cuestiones relacionadas