c# visual-studio-2012 .net-4.5

c# - VS2012 $(existe) solo acepta valores escalares



visual-studio-2012 .net-4.5 (7)

Abra su archivo .csproj y busque cualquier etiqueta de importación duplicada .

En mi caso, el .csproj tenía dos líneas como esta:

<Import Project="$(MSBuildExtensionsPath)/Microsoft/VisualStudio /v10.0/WebApplications/Microsoft.WebApplication.targets" />

Eliminar uno de ellos solucionó el problema.

De acuerdo, esto es más un error de compilación que un error de programación. Nunca tuve muchas razones para ensuciarme las manos con las compilaciones, así que este error me desconcierta.

Intenté buscar en Google este error con pocos resultados, las respuestas son inexistentes, incomprensibles o no son aplicables.

El error es:

The "exists" function only accepts a scalar value, but its argument "$(PackageSourceManifest)" evaluates to "[same path];[same path]" which is not a scalar value. C:/Program Files(x86)/MSBuild/Microsoft/VisualStudio/ v10.0/Web/Microsoft.Web.Publishing.targets

De todos modos, busqué en Microsoft.Web.Publishing.targets y encontré la línea donde está extrayendo el error. Tengo versiones detalladas en las que estaba tratando de ver si podía encontrar algo que me llamara la atención y que pudiera solucionar.

Nada.

He buscado en Google cómo modificar los Manifiestos de las fuentes del paquete, he buscado en Propiedades de compilación, he buscado un manifiesto de origen o incluso algo que dice manifiesto de origen, nada. Tal vez estoy buscando demasiado o quizás no sé qué buscar.

¿Alguna idea sobre cómo solucionar esto y qué causó esto?


Creo que esto me sucedió cuando traté de Publicar en la Web un proyecto en VS2012 que originalmente había sido un proyecto VS2010. Entonces, recrear el proyecto en VS2012 es una forma de curarlo. O como lo menciona @Giacomelli, eliminando la referencia a los objetivos v10.0. Tenga en cuenta que V10.0 = v11.0 y v11.0 = VS2012


Obtuve el mismo error en VS2013, pero solo cuando intento reconstruir el proyecto. Debajo de cómo resuelvo el problema en mis condiciones, espero que también sea útil para otras personas.

Configuración:

  • Tengo mis archivos de mecanografía en proyectos separados en la solución.
  • Esos proyectos migraron para VS 2012.

Causa : cuando hago clic en el error en los archivos Microsoft.Web.Publishing.targets, descubro que el proyecto estaba usando la versión VS2012 de esos archivos. Esos son los proyectos donde solo migraron parcialmente desde VS2012 a VS2013.

Solución : abra el proyecto de mecanografía (primer proyecto de descarga) Busque:

<PropertyGroup> <VisualStudioVersion Condition="''$(VisualStudioVersion)'' == ''''">12.0</VisualStudioVersion> <VSToolsPath Condition="''$(VSToolsPath)'' == ''''">$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup>

  • Comenta la línea VSToolsPath
  • Guarde y cierre el archivo
  • Recargar el proyecto Puede ver una pantalla de migración de Visual Studio que le notifica que el proyecto fue actualizado.

    reconstruir el proyecto, ahora debería funcionar


Solo tuve el mismo problema y comprobé mi archivo .csproj. No encontré nada malo, ni importaciones duplicadas, nada.

Después de tropezar con 30 minutos lo solucioné abriendo mi archivo .csproj y reorganizando las etiquetas en él.

Inicialmente los moví a todos hacia la parte superior, pero recibí un mensaje de error que decía que OutputPath no estaba definido, luego los moví a todos justo debajo de donde estaban definidos y todo funcionó. Todos ellos excepto:

Lo más probable es que moviendo NuGet.targets desde la parte inferior del archivo fue lo que realmente lo solucionó. No tengo ni idea, ni quiero perder más tiempo.

Espero que esto ayude a alguien.


Tuve el mismo problema debido a la importación incorrecta de $ MSBuildExtensionsPath32 $ . Es obvio que v10.0 es para VS2010 mientras que usted está en VS2012 (v11.0).

Por lo tanto, cambie su importación a:

<Import Project="$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v11.0/WebApplications/Microsoft.WebApplication.targets" />

Por otro lado, si tiene VS2013 (v12.0) , puede cambiarlo a:

<Import Project="$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v12.0/WebApplications/Microsoft.WebApplication.targets" />

Nota: si elimina esta línea como @giacomelli sugerida, no podrá usar definir su archivo de destino personalizado.

Desde MSDN: MSBuildExtensionsPath32

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

Introducido en .NET Framework 4: no hay diferencia entre los valores predeterminados de MSBuildExtensionsPath y MSBuildExtensionsPath32. Puede establecer la variable de entorno MSBUILDLEGACYEXTENSIONSPATH en un valor no nulo para habilitar el comportamiento del valor predeterminado de MSBuildExtensionsPath en versiones anteriores. En .NET Framework 3.5 y versiones anteriores, el valor predeterminado de MSBuildExtensionsPath apunta a la ruta de la subcarpeta MSBuild en la carpeta / Archivos de programa / o / Archivos de programa (x86), dependiendo de la bitidez del proceso actual. Por ejemplo, para un proceso de 32 bits en una máquina de 64 bits, esta propiedad apunta a la carpeta / Archivos de programa (x86). Para un proceso de 64 bits en una máquina de 64 bits, esta propiedad apunta a la carpeta / Archivos de programa. No incluya la barra invertida final en esta propiedad. Esta ubicación es un lugar útil para colocar archivos de destino personalizados. Por ejemplo, sus archivos de destino se pueden instalar en / Archivos de programa / MSBuild / MyFiles / Northwind.targets y luego se pueden importar en archivos de proyecto utilizando este código XML:


Tuve el mismo problema en VS 2012 -

Error 48 04115: The "exists" function only accepts a scalar value, but its argument "@(_UnmanagedRegistrationCache)" evaluates to "obj/TheQueueData.sqlproj.UnmanagedRegistration.cache;obj/TheQueueData.sqlproj.UnmanagedRegistration.cache" which is not a scalar value. C:/Windows/Microsoft.NET/Framework/v4.0.30319/Microsoft.Common.targets 1091 7 TheQueueData

Cerrar y volver a abrir la solución me sirvió.