2010-10-02 12 views
7

Estoy compilando una solución .NET 3.5 con msbuild con esta línea de código:haciendo msbuild desde la línea de comandos: obtener errores para '' Microsoft.VisualStudio.TestTools el espacio de nombres referenciado

msbuild.exe n:\temp\Thisnight.sln /p:Configuration=Debug /v:diag 

y da me este error:

error CS0234: The type or namespace name 'UnitTesting' does not exist in the namespace 'Microsoft.VisualStudio.TestTools' (are you missing an assembly reference?) 

he obtenido la última fuente que (por supuesto) se basa en VS2010 sí mismo.

Parece que no puede averiguar lo que me falta aquí ....

EDITAR

ver más arriba en la ventana de comandos de este mensaje:

C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3245: Could not resolve this reference. 
Could not locate the assembly "Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutra 
l, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 

I don' Creo que tengo que incluir esta DLL por mi proyecto (porque es un dll MS?)

EDIT Lo que he visto ahora: todos los proyectos son para .Net 3.5 framework, b ut el proyecto de prueba (que es el que me está dando problemas) es para el framework .Net 4.0. Y lo extraño es que no puedo cambiarlo.

Es una solución vs2010 con web. webservice, winforms, dll, setup y testprojects

+0

¿Puedes detallar el contenido de tu solución? Es un poco difícil de probar y reproducir esto con la información actual. –

+0

Es una solución vs2010 con 16 proyectos (web, webservice, winforms y dll). – Michel

Respuesta

1

Si nos fijamos en las Microsoft.Common.Targets de archivo verá:

<!-- 
    The SearchPaths property is set to find assemblies in the following order: 

     (1) Files from current project - indicated by {CandidateAssemblyFiles} 
     (2) $(ReferencePath) - the reference path property, which comes from the .USER file. 
     (3) The hintpath from the referenced item itself, indicated by {HintPathFromItem}. 
     (4) The directory of MSBuild's "target" runtime from GetFrameworkPath. 
      The "target" runtime folder is the folder of the runtime that MSBuild is a part of. 
     (5) Registered assembly folders, indicated by {Registry:*,*,*} 
     (6) Legacy registered assembly folders, indicated by {AssemblyFolders} 
     (7) Resolve to the GAC. 
     (8) Treat the reference's Include as if it were a real file name. 
     (9) Look in the application's output folder (like bin\debug) 
    --> 

VS corre MSBuild en su propio entorno, no sé las diferencias tampoco, pero ¿Usted intentó que el montaje que carecen ruta en la línea de comando modificando los elementos de los Carpetas de ensamblaje. Tienes un tuto aquí: http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild.aspx.

Espero que esto ayude.

+0

Hola, lo intenté:/p : AssemblySearchPaths ...... – Michel

+0

No estoy seguro de si puede anular AssemblySearchPaths en la línea de comandos. ¿Intentó agregar un objetivo personalizado como se muestra en el tutorial? O bien, podría modificar directamente Microsoft.Common.Targets pero no creo que sea una buena solución ... –

+0

No funcionó, espero que alguien algún día lea esta publicación y me dé una solución. No pensé por adelantado que sería tan difícil. Han estado trabajando en ello durante> 6 horas, y no fue lo suficientemente importante como para continuar. Marcó esto como respuesta al esfuerzo que BB tomó. – Michel

2

¿ejecutó vcvars32.bat en su shell de cmd?

+0

Whow, no! ¿que es eso? – Michel

+0

y también puedo programarlo desde mi cruisecontrol (porque cuando obtengo el msbuild en ejecución, quiero ejecutarlo desde mi cruisecontrol), o estoy ansioso ahora :) – Michel

+0

Es parte de la distribución vs, bajo Common7 \ Tools carpeta. – Marco

1

intente ejecutar:

msbuild/versión

Asegúrese de que es la versión 3.5 y no es algo mayor.

Asegúrese de que el DLL MS está aquí, o en algún lugar de esa manera:

C: \ Archivos de programa \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

Cuestiones relacionadas