2010-09-23 24 views
65

¿Por qué obtengo el siguiente error de compilación?MSBUILD: error MSB1008: solo se puede especificar un proyecto

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Code\EduBenesysNET\EduBenesysNET\EduBenesysNET.vbproj /t:publish /p:Configuration=Release /p:Platform=AnyCPU /v:detailed /p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\" /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest/" /p:ApplicationVersion=1.0.1.198 /p:ProductName="Total Education TEST" /p:PublisherName="BeneSys, Inc." /p:UpdateRequired="True" /p:MinimumRequiredVersion=1.0.1.198 
Microsoft (R) Build Engine Version 3.5.30729.1 
[Microsoft .NET Framework, Version 2.0.50727.3603] 
Copyright (C) Microsoft Corporation 2007. All rights reserved. 

MSBUILD : error MSB1008: Only one project can be specified. 
Switch: Education 

For switch syntax, type "MSBuild /help" 

No veo cómo se especifica un segundo proyecto.
¿Está almacenado en algún archivo de proyecto?

+2

Las mismas comando funciona en powershell pero no en cmd.exe ... Parece que usted está golpeando una sequance carácter espacial en alguna parte ... –

Respuesta

28

SOLUCIÓN
Retire las comillas alrededor de la/t: PublishDir establecer

es decir
En lugar de cotizaciones

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\" 

utilizar sin comillas

/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\ 

Lo siento no publiqué mi hallazgo antes. De hecho, tuve que investigar de nuevo para ver qué debía cambiarse. ¿Quién hubiera pensado que eliminar las comillas habría funcionado? Descubrí esto cuando vi una compilación de compañeros de trabajo para otra solución y noté que no tenía comillas.

+1

Esto es muy extraño. En mi caso, recibí el mismo error, pero el problema es que tenía un camino sin comillas con un espacio en él. Agregar las citas solucionó el problema. –

+0

Tuve el mismo problema que @MarkArnott, no funcionó con espacios o espacios vacíos, pero las citas sí. – Zitrax

+5

Probablemente la última barra invertida en su camino fue escapar de la comilla doble de cierre. Si es correcto, no es necesario que elimine las comillas dobles, sino que debe escapar de sus barras diagonales inversas. –

19

Este problema aparece cuando tiene una ruta de acceso o una propiedad que contiene un espacio y que no está entre comillas.

Todas sus propiedades y camino tienen una cita a su alrededor, es extraño. El mensaje de error indica Education como un interruptor, intente eliminar /p:ProductName="Total Education TEST" para ver si funciona.

+3

Evitar el espacio en ruta de la carpeta a deshacerse de este problema. – Gopinath

+1

@Julien Hoarau: Intenté 'MSBuild.exe C: \ BuildAgent \ work \ 4c7b8ac8bc7d723e \ WebService.sln/p: Configuration = Release/p: OutputPath = bin/p: DeployOnBuild = True/p: DeployTarget = MSDeployPublish/p: MsDeployServiceUrl = https: //204.158.674.5/msdeploy.axd/p: username = Admin/p: password = Contraseña # 321/p: AllowUntrustedCertificate = True/p: DeployIisAppPath = Default WebSite/New/p: MSDeployPublishMethod = WMSVC'. Me da un error 'MSBUILD: error MSB1008: solo se puede especificar un proyecto. Cambiar: Sitio web/Nuevo'. ¿Cuál podría ser el problema? –

6

Necesita poner qoutes alrededor de la ruta y el nombre del archivo.
Así que utilice MSBuild "C: \ Path \ nombre de archivo Name.Exe"/[Opciones]

4

intenta quitar la barra diagonal inversa o reducir al final del camino que publicar e instalar url

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest" 
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest" 

Debe haber tocado una secuencia especial de caracteres con \ "y (o) /", pero no sé lo suficiente en cmd.exe para averiguarlo.

Personalmente siempre uso Powershell: ¡es mucho más amigable y poderoso!

Espero que ayude!

85

Resulta que la barra al final de la propiedad PublishDir está escapando de la cita final. Escapar de la barra final resolvió mi problema.

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\" 

De esta manera podemos usar comillas para las rutas que tienen espacios en blanco en las propiedades que requiere MSBuild la barra final.

Sé que esto es una entrada antigua, pero me siento como que tenía que compartir esto con alguien :-)

+0

¡Gracias por compartir! ¡Resolvió mi problema! –

+0

¡Gracias, mía también! – SDK

+0

haha, #minetoo! – TheVillageIdiot

1

Esto funcionó para mí en TFS MSBuild argumento. Tenga en cuenta el número de barras inclinadas.

/p: DefaultPackageOutputDir = "\\ Rdevnet \ Visual Studio Projects \ Seguros \"

2

En vs2012 sólo tratar de crear una definición de Construir "Test Build" usando la plantilla por defecto TFS "DefaultTemplate ....xaml"(por lo general una copia del mismo)

Se fallará con el habitual auto-explica-error: 'MSBUILD: error MSB1008: Sólo un proyecto puede ser specified.Switch: Actividades'

De curso en algún lugar de la plantilla predeterminada de TFS falta algunos " para que msbuild reciba como parámetro un directorio no escapado que contenga espacios, por lo que se generarán varios proyectos (?!)

NUNCA use espacios en sus nombres de definición de compilación TFS, bastante tristes y simples en al mismo tiempo

+1

Esta respuesta podría usar un poco de limpieza. Muy difícil de seguir – theMayer

+1

El punto acerca de Nunca usar espaciado en los nombres de Definición de compilación TFS es bueno! Esto me ha atrapado varias veces. – Valentein

1

Estaba usando comillas simples alrededor de la contraseña parámetro cuando llegué el error

/p:password='my secret' mal

y lo cambió a utilizar comillas dobles para resolver el problema.

/p:password="my secret" buena

Probablemente el mismo se aplicaría a cualquier parámetro que necesita cotizaciones de valores que contienen un espacio.

0

Por si alguien tiene el mismo problema que yo, me faltaba "/" antes de uno de los argumentos "/ p". No muy claro a partir de la descripción. Espero que esto ayude a alguien.

0

Para mí se me había olvidado de añadir el cierre de cotización

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)

a

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"

-1

Si utiliza espacio de trabajo predeterminado en Jenkins, esto podría ocurrir. Use una ubicación de espacio de trabajo personalizada sin espacios.

enter image description here

Cuestiones relacionadas