Цель "_CopyBinDeployableAssemblies" не существует в проекте
Я установил Visual Studio 2010 SP1 на днях, и теперь, когда я пытаюсь "опубликовать" свои приложения, я получаю эту ошибку на ВСЕХ моих проектах.
The target "_CopyBinDeployableAssemblies" does not exist in the project.
Я понятия не имею, в чем здесь проблема, и я ничего не нахожу во всемогущем Google, и это меня немного нервирует.
Кто-нибудь может указать мне правильное направление здесь или, может быть, у кого-то еще есть такая же проблема? Потому что это происходит во всех моих проектах, поэтому я немного удивлен, что я один на один с этой проблемой.
Сайты являются веб-приложениями ASP.NET, некоторые из них являются смешанными веб-формами /MVC, но один - только веб-формы. 1 сайт очень мега простой, почти без ссылок, и я все еще получаю ошибку.
8 ответов
Я также столкнулся с этой проблемой после установки Visual Studio 2010 SP1 Beta.
Отсутствующая цель _CopyBinDeployableAssemblies
определяется в:
$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
Я решил проблему, добавив <Import>
элемент сломанных файлов проекта.
Так что если у вас есть зависимость от вышеуказанных целей, которую вы можете узнать, посмотрев следующее <Import>
в файлах вашего проекта:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
Вам также необходимо импортировать:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Из сообщения блога joao João Angelo добавьте следующее в файл проекта (.csproj/.vbproj)
<Target Name="Noop"></Target>
<PropertyGroup>
<CollectFilesFrom_binDeployableAssembliesDependsOn>
Noop
</CollectFilesFrom_binDeployableAssembliesDependsOn>
</PropertyGroup>
перед импортом
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
Это работает для меня, используя ClickOnce
на VS2010 SP1
используя преобразование App.config
Хохо, Джейкоб прав!
Когда мы устанавливаем VS 2010 SP1, путь MSBuild по умолчанию будет сосредоточен на папке
[C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0]
не
[C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0] больше.
А файл [Microsoft.WebApplication.targets] имеет цель сборки с именем [_CopyBinDeployableAssemblies].
Поэтому мы просто добавляем цель [_CopyBinDeployableAssemblies] в наш файл проекта (можно открыть с помощью Блокнота:)), проблема была решена
Пример: <Target Name="_CopyBinDeployableAssemblies"></Target>
, Просто нужна пустая цель:)
Ответ, данный Рагге выше, был тем, что мне было нужно. Но в моем случае я добавил только вторую строку. Первая строка, которую дал Ragge, уже была в файле проекта.
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Это VS 2013 SP 3, и у меня все еще есть эта проблема! Чтобы это исправить, мне пришлось изменить следующую строку в случае невозможности сборки проектов из:
<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />
на следующую строку:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Хорошо, потратил 4 часа на это сегодня, и я решил это сейчас. Но, к сожалению, у меня нет однозначного ответа, в чем проблема. Но я опишу, что я сделал.
- Деинсталлировал SP 1 и получил пару ошибок. Это где, потому что у меня не было VS установить носитель, и он, где просит об этом.
- SP1, казалось, был удален, но я все еще получил ошибку.
- Скачал VS Ultimate Trial и попытался сделать ремонт, не помогло.
- Скачал VS 2010 SP1 снова и установил его. Все та же проблема.
- Деинсталлировали VS SP1 с доступом к установочному носителю VS Ultimate, и я получил только одну ошибку, когда ему потребовались некоторые вещи VS Express, я нажал кнопку отмены на этом, и он сказал, что удаление не удалось.
- Запустил Visual Studio и проблема исчезла! Аллилуйя!
Ну, я вообще не виню в этом MS. Я знал, что это бета-версия, но у меня никогда не было подобных проблем.
Надеюсь, что это решает проблему для кого-то еще.
Отмените развертывание проекта, отредактируйте и добавьте следующий код в файл проекта в конце <Import>
<Target Name="_CopyBinDeployableAssemblies"
Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
<CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*"
Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')"
Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*">
<Output ItemName="_binDeployableAssemblies" TaskParameter="Include" />
</CreateItem>
<Copy SourceFiles="@(_binDeployableAssemblies)"
DestinationFolder="$(OutDir)\%(RecursiveDir)" SkipUnchangedFiles="true"
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
Ответ, который дал Рагге, сработал и для нас. У меня было решение, которое я не открывал после установки SP1, которое просто отказалось строить с той же ошибкой. Отредактировал файл проекта в Блокноте, чтобы включить эти два утверждения и альт! проблема решена. Большое спасибо за ваше усердие!
Дополнение: Коллега упомянул, что добавление импорта приведет к тому, что сборки, происходящие вне Visual Studio, вероятно, будут жаловаться (командная строка msbuild, сервер сборки), потому что там нет Microsoft.WebApplication.targets. Поэтому мы изменили строку импорта следующим образом:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="$(BuildingInsideVisualStudio) == true AND exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets')" />
Эти условия были важны для наших сборок, так как мы выполняем все развертывания с использованием сервера сборки и msdeploy.