Отмените развертывание проекта, отредактируйте и добавьте следующий код в файл проекта в конце

ановил Visual Studio 2010 SP1 на днях, и теперь, когда я пытаюсь «опубликовать» свои приложения, я получаю эту ошибку на ВСЕХ моих проектах.

The target "_CopyBinDeployableAssemblies" does not exist in the project.

Я понятия не имею, в чем проблема, и я ничего не нахожу во всемогущем Google, и это меня немного нервирует.

Кто-нибудь может указать мне правильное направление здесь или, может быть, у кого-то еще есть такая же проблема? Потому что это происходит во всех моих проектах, поэтому я немного удивлен, что я один на один с этой проблемой.

Сайты являются веб-приложениями ASP.NET, некоторые из них представляют собой смешанные веб-формы / MVC, а один - только веб-формы. 1 сайт очень мега простой, почти без ссылок, и я все еще получаю ошибку.

 Hans Passant13 янв. 2011 г., 17:07
Пакет обновления все еще находится в бета-версии. Вы можете сообщать об ошибках на connect.microsoft.com
 a_hardin09 мар. 2011 г., 19:31
Мы столкнулись с той же проблемой в финальной версии пакета обновления 1.
 Olaj14 янв. 2011 г., 15:44
Да, я знаю. Я разместил ответ ниже, так что теперь есть некоторая ссылка на эту проблему по крайней мере в Google.
 Chris S05 нояб. 2015 г., 00:34
Если вы получаете это в Azure или при публикации в Visual Studio, см.stackoverflow.com/a/22055219/21574

Ответы на вопрос(8)

и у меня все еще есть эта проблема! Чтобы это исправить, мне пришлось изменить следующую строку в случае невозможности сборки проектов из:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

на следующую строку:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

отредактируйте и добавьте следующий код в файл проекта в конце<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> 

Когда мы устанавливаем 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>, Просто нужна пустая цель :)

ИзЖоао-Анжело«sСообщение блогадобавьте следующее в файл проекта (.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 transform

который дал Рагге, сработал и для нас. У меня было решение, которое я не открывал после установки 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.

Решение Вопроса

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" />
 Ash09 февр. 2011 г., 15:02
Если (как и мы) вы используете смесь RTM и SP1b, вы можете включить последний импорт с условием = "Exists ('$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets') "что предотвратит ошибки для тех, у кого не установлен SP.
 a_hardin09 мар. 2011 г., 19:33
Спасибо @Ragge и @Ash!
 kindohm10 июн. 2011 г., 14:24
CopyBinDeployableAssemblies - этоне в моем файле Microsoft.WebApplication.targets. Какой предварительный запрос для его добавления? У меня установлен SP1 (производство).
 Yhrn08 апр. 2011 г., 14:28
+1, столкнулся с той же проблемой в финальной версии SP1, и добавление нового импорта исправило ее. Тем не менее, я получал предупреждение, пока не удалил старый импорт, поэтому я думаю, что лучшим решением, если вы используете только SP1, является замена импорта, а не добавление нового.
 11 мар. 2011 г., 13:04
Вышеуказанное является правильным решением, и следующее будет работать как для 32-битных, так и для 64-битных версий. <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets" />

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

Деинсталлировал SP 1 и получил пару ошибок. Это где, потому что у меня не было VS установить носитель, и он, где просит об этом.SP1, казалось, был удален, но я все еще получил ошибку.Скачал VS Ultimate Trial и попытался сделать ремонт, не помогло.Скачал VS 2010 SP1 снова и установил его. Все та же проблема.Деинсталлированный VS SP1 с доступом к установочному носителю VS Ultimate, и я получил только одну ошибку, когда ему потребовались некоторые вещи VS Express, я нажал кнопку отмены на этом и он сказал, что деинсталляция не удалась.Запустил Visual Studio и проблема исчезла! Аллилуйя!

Ну, я вообще не виню в этом MS. Я знал, что это бета-версия, но у меня никогда не было подобных проблем.

Надеюсь, что это решает проблему для кого-то еще.

данный Рагге выше, был тем, что мне было нужно. Но в моем случае я добавил только вторую строку. Первая строка, которую дал Ragge, уже была в файле проекта.

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

Ваш ответ на вопрос