Подтвердить что ты не робот

VS2012 $(существует) принимает только скалярные значения

Хорошо, это скорее ошибка сборки, чем ошибка программирования. У меня никогда не было никаких оснований, чтобы мои руки были грязными со сборками, поэтому эта ошибка меня озадачивает.

Я пробовал эту ошибку с ошибкой с небольшими результатами, ответы либо несуществующие, непонятные, либо неприменимые.

Ошибка:

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

Во всяком случае, я ворвался в Microsoft.Web.Publishing.targets, и я нашел строку, где это ошибка. У меня есть многословная сборка, где я пытался увидеть, могу ли я найти что-нибудь, что торчало для меня, что я мог бы исправить.

Ничего.

У меня есть googled, как изменить Пакет Source Manifests, я посмотрел в Build Properties, я искал источник-манифест или даже что-то, что говорит о манифесте источника, ничего. Может быть, я слишком много смотрю или, может быть, просто не знаю, что искать.

Любые идеи о том, как исправить это и что вызвало это?

4b9b3361

Ответ 1

Откройте файл .csproj и найдите любой дублированный тег импорта.

В моем случае .csproj имел две строки:

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

Удалите одну из них, исправив проблему.

Ответ 2

Имел ту же проблему в 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

Закрытие и повторное открытие решения сделали трюк для меня.

Ответ 3

У меня была такая же проблема из-за неправильного импорта $MSBuildExtensionsPath32 $. Очевидно, что v10.0 для VS2010, тогда как вы на VS2012 (v11.0).

Поэтому измените свой импорт на:

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

Для других, если у вас VS2013 (v12.0), вы можете изменить его на:

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

Примечание. Если вы удалите эту строку, например, @giacomelli, вы не сможете использовать свой целевой файл цели.

Из MSDN: MSBuildExtensionsPath32

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

Представлено в .NET Framework 4: нет никакой разницы между значения по умолчанию для MSBuildExtensionsPath и MSBuildExtensionsPath32. Вы можете установить переменную среды MSBUILDLEGACYEXTENSIONSPATH на ненулевое значение, чтобы включить поведение значения по умолчанию MSBuildExtensionsPath в более ранних версиях. В .NET Framework 3.5 и ранее значение по умолчанию для MSBuildExtensionsPath указывает на путь к папке MSBuild в папке \Program Files\или\Program Файлы (x86), в зависимости от битности текущего процесса. Например, для 32-битного процесса на 64-битной машине это свойство указывает на папку \Program Files (x86). Для 64-битного процесса на 64-бит, это свойство указывает на папку \Program Files. Делать не включают окончательную обратную косую черту в этом свойстве. Это место является полезное место для размещения пользовательских целевых файлов. Например, ваша цель файлы можно установить в \Program Файлы\MSBuild\MyFiles\Northwind.targets, а затем импортируются в проект файлов с помощью этого XML-кода:

Ответ 4

Я думаю, что это случилось со мной, когда я попытался опубликовать проект в VS2012, который первоначально был проектом VS2010. Поэтому воссоздание проекта в VS2012 - это способ его лечения. Или как @Giacomelli упоминает, удаляя ссылку на цели v10.0. Обратите внимание, что V10.0= VS2010 и v11.0= VS2012

Ответ 6

У меня такая же ошибка в VS2013, но только когда я пытаюсь перестроить проект. Ниже, как я решаю проблему в моих условиях, я надеюсь, что это также полезно для других людей.

Конфигурация:

  • У меня есть мои файлы typescript в отдельных проектах в решении.
  • Эти проекты были перенесены на VS 2012.

Причина: когда я нажимаю на ошибку в файлах Microsoft.Web.Publishing.targets, я обнаружил, что проект использовал версию этих файлов VS2012. Это проекты, которые только частично переносятся из VS2012 в VS2013.

Решение: Откройте проект typescript (первый проект разгрузки) Поиск:

      <PropertyGroup>
        <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
        <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
      </PropertyGroup>
  • Комментировать строку VSToolsPath
  • Сохранить и закрыть файл
  • Перезагрузка проекта Вы можете увидеть переход экран из визуальной студии, уведомляющий вас о том, что проект был обновлен.

    перестроить проект, теперь он должен работать

Ответ 7

У меня была такая же проблема и проверка моего файла .csproj. Я не нашел ничего плохого, никаких дубликатов импорта - ничего.

После спотыкания 30 минут я исправил его, открыв файл .csproj и переставив в него теги.

Сначала я переместил их всех на верх, но получил сообщение об ошибке, что OutputPath не определен, затем я переместил все их прямо под тем, где они были определены, и все сработало. Все они за исключением:

Скорее всего, перемещение NuGet.targets из нижней части файла было тем, что на самом деле зафиксировало его. Я понятия не имею, и не хочу тратить больше времени.

Надеюсь, это поможет кому-то.