Веб-публикация Visual Studio 2012 не копирует файлы

У меня есть проект веб-приложения в VS 2012, и когда я использую инструмент веб-публикации, он успешно строится, но не копирует файлы в цель публикации (в этом случае файловая система).

Если я посмотрю на вывод сборки, я вижу, что все копируется в objReleasePackagePackageTmp правильно, но тогда все, что я вижу в выводе сборки, это:

4 > Done building project " {Проект}.csproj файл".
4>удаление существующих файлов...
4>публикация папку /...
4> ========== сборка: 3 успешно, 0 не удалось, 1 обновлено, 0 пропущено ==========
========== Публикация: 1 успешно, 0 не удалось, 0 пропущено ==========

даже если он говорит, что публикация удалась, в целевом каталоге для публикации нет файлов.

Я видел это в нескольких проектах, и иногда кажется, что конфигурации решения / платформы вызывают эту проблему, но я не смог точно определить точная причина для этого.

кто-нибудь еще видел, как это происходит, или есть идея о том, как заставить это работать правильно?

обновление:

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

обновление 2:

Я опубликовал ошибку в Microsoft Connect и услышал от разработчика в команде VS Web Developer. Он сказал, что они исправили эту проблему во внутренних сборках и скоро выпустят обновление для инструмента публикации, которое исправит эту проблему.

обновление 3:

Это было недавно исправлено с обновлением Visual Studio 2012 2

29 ответов


Это может быть вызвано решениями / проектами, которые были созданы с помощью RC vs2012. Это произошло со мной несколько месяцев назад и исправило проблему, убедившись, что мои конфигурации сборки решения соответствуют моим конфигурациям проекта...

недавно я столкнулся с той же проблемой при открытии того же решения, первоначально созданного в vs2012RC с VS2012 Express для Web. Я сделал именно то, что предлагал оригинальный плакат, и это исправило мою проблему.

вот поток, который приведи меня к ответу:--1-->

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

соответствующий ответ из разговора выше, который помог мне, был:

опубликовано Microsoft на 6/13/2012 в 12: 00 pm Привет Андрей,

Это была ошибка в том, как мы обрабатываем конфигурации решения и конфигурация проекта. Мы неправильно предположили, что они будут то же самое (например Выпуск решения / x86 будет иметь для каждого проекта значение Выпуск|x86, а), из-за которой нам не построить свойства для публикации файлов.

обходной путь состоит в том, чтобы сделать конфигурацию решения и построить соответствие конфигурации. Эта проблема будет исправлена в следующем релизе Visual Studio 2012.

спасибо, - Джимми Льюис SDET, Visual Web Developer team


та же проблема. Обходным путем было изменение параметров публикации от выпуска до отладки. Повторно опубликуйте, а затем вернитесь к Release...


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

  • NewProfile.pubxml
  • NewProfile.pubxml.user

при открытии проекта, который имеет эти файлы в папке PublishProfile из системы управления версиями он имеет только , а не .publxml.user файл, поэтому он создает .publxml.user файл на лету, когда вы открываете проект. Когда он создает новый .publxml.user на лету xml выглядит например:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

при создании нового профиля он создает XML, который выглядит так:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

если вы берете <PropertyGroup> узел и поместите его в .pubxml.user файл ваши PublishProfiles начнет работать снова.


легко исправить-удалить свой профиль публикации и создать новый.

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

это исправить.

У меня была эта проблема с переключением с 2010 на 2012


У меня была такая же ошибка, и я меняю настройку с release to debug и проблема решена..


У меня была такая же проблема, однако ни один из ответов в этой теме не работал для меня. Моя проблема заключалась в том, что существует каталог, содержащий динамически генерируемые (моим приложением) статические HTML-файлы. Весь справочник не публиковался.

решение, которое сработало для меня, было найдено здесь:

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

типы файлов, которые были .PDF-файлы и .формат RTF.

Это произошло потому, что эти расширения файлов не были распознаны как требующие публикации Visual Studio. К счастью, это можно изменить в Visual Studio.

Выберите файлы, которые не копируются. В свойства обеспечить Создать Действие установлено значение контент.

Если это не работает следующим может быть судим.

под проект меню выберите Пакет/Публикация Web и обратите внимание на это выпадающее:

enter image description here

попробуйте изменить это на все файлы в этой папке проекта.


Это потому, что .pubxml.пользователь содержит необходимую информацию для публикации, и этот файл не включен (и не должен) быть включен в систему управления версиями. Чтобы исправить эту ошибку VS, скопируйте информацию из .pubxml.файл пользователя .pubxml файл. Соответствующие свойства:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

положите их в свой .pubxml, и вам должно быть хорошо идти.


Я пробовал все эти решения, но это тот, который работает каждый раз.

мы просто меняем " метод публикации: "с" файловая система "на" веб-развертывание", и сразу же меняем его обратно на"файловая система".


У меня (была) одна и та же проблема для нескольких проектов. Только нажмите представляется веб-проектов. Удаление и воссоздание профиля решает проблему только один раз. Кроме того, сравнение сгенерированного publishxml не дает никаких различий, поэтому он не кажется связанным с профилем вообще.

обходной путь, упомянутый OP, чтобы изменить проблемы сборки назад и вперед, кажется единственным надежным решением в настоящее время.


Я столкнулся с той же проблемой на VS 2010, после проверки вывода публикации, журналов событий, включения и проверки журналов visual studio и т. д. Затем я решил удалить веб-публикацию (через add/remove), которая, как я считаю, была недавно обновлена до v1.0.30810.0. Это решило проблему.


здесь у нас была та же проблема.

мы просто меняем " метод публикации: "с" файловая система "на" веб-развертывание", и сразу же меняем его обратно на"файловая система".


для меня сработало следующее:

просто измените из Release>Debug>Release (или наоборот), а затем опубликуйте.

нет необходимости удалять, редактировать, публиковать все, что вам не нужно.


моя проблема была в неправильной конфигурации myproject.файл csproj. '_address-Шаг 1-сохраняется.файл cshtml не копировался при публикации. "None" изменен на "Content", теперь все в порядке. enter image description here


та же проблема с VS 2012 Pro с целью публикации диска. Проект используется для правильной публикации, но начал делать эту проблему, когда не удалось скопировать файлы в папку назначения.

решение состояло в том, чтобы отредактировать профиль публикации, изменить режим с выпуска (любой процессор) на отладку, а затем вернуться к выпуску (любой процессор). Это вызывает PublishProfiles\projname.pubxml.пользовательский файл для перезаписи (как описано выше). Похоже, он добавил LastUsedBuild, LastUsedPlatform и Элементы TimeStampOfAssociatedLegacyPublishxmlfile в узле propertygroup. После завершения публикации добавляется еще одна ItemGroup с отдельными файлами и временем публикации.


это действие было успешным для меня:

убить публиковать профили в "свойства" > " PublishProfiles>ХХХХ.pubxml " и повторная настройка.


для чего это стоит, я в конечном итоге отказался от борьбы с Web Deploy, чтобы заставить его делать то, что я хотел (копировать развертываемые файлы и ничего больше), поэтому я написал его в PowerShell и очень доволен результатом. Это много быстрее, чем все, что я пробовал через MSBuild/Web Publish, предположительно потому, что эти методы все еще делали то, что мне не нужно.

вот суть (буквально):

function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir$_"
    $to = split-path -parent "$deploy_dir$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}

в моем случае я называю это в Среда CI (TeamCity), но она также может быть легко подключена к событию после сборки.


Я нашел, что могу обойти эту проблему, изменив целевое местоположение с obj / [release|stage/..] к новому пути вне папок решения полностью, например c:\deployment - ... Похоже, что VS 2012 запутался и, возможно, сдался где-то во время процесса публикации.

матовая


недавно была такая же проблема в VS 2013 для проекта MVC, в котором я импортировал Umbraco CMS. Я не мог опубликовать. Ответ выше помог, хотя мне нужно было некоторое время, чтобы понять, что я на самом деле должен делать в VS. Для этого потребовалось некоторое исследование, например, в блогах MS. Я стараюсь говорить просто:

  • выберите на панели инструментов VS определенную конфигурацию, например Release и любой CPU. Запуск проекта.
  • затем щелкните правой кнопкой мыши в обозревателе решений в решении в вопрос, выберете "опубликовать". Создайте новый профиль публикации или используйте данный, но всегда убедитесь, что в настройках выбрана та же конфигурация (например, Release и любой CPU), что и перед последним запуском проекта.
  • кроме того, в моем случае это был необходимо удалить OBJ папка, потому что здесь настройки из моих последних неудачных попыток публикации застряли, хотя я перезапустил VS и удалил все профили публикации.

У меня есть веб-приложение с несколькими другими ссылочными проектами в решении. Я успешно развертывался с одной конфигурацией публикации много раз в прошлом. Я изменил конфигурацию проекта с Debug на Release для проекта, который был пропущен в прошлом. В следующий раз, когда я попытался развернуть, я получил эти симптомы, где публикация просто тихо терпит неудачу - она ничего не делает и говорит, что ей это удалось:

1>------ Build started: Project: Project, Configuration: DeployProduction Any CPU ------
1>  
2>Publishing folder /...
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

единственный способ восстановить его-уничтожить Опубликуйте профиль, закройте Visual Studio, чтобы принудительно сохранить удаление, снова откройте его и заново создайте профиль публикации с нуля. Как только я это сделаю, я снова смогу опубликовать fine.

на Win8 в VS2012, херовый ноутбук.


в Visual Studio 2012 переключение между выпусками по-прежнему вызывает проблемы.

мы добавили событие предварительной сборки для удаления : del /s /f /q $(ProjectDir)\obj и это исправило проблему публикации. Уборка работает иногда, но не всегда.


Я, наконец, нашел ответ сам. Все вышеперечисленные решения не работают для меня.

Что я сделал, так это то, что я перемещаю проект на диск c, меняю папку проекта на что-то более короткое и публикую его..

причина, по которой это не удалось на моей стороне, заключается в том, что у меня было очень длинное имя проекта/heirarchy.

C:\Users\user\Desktop\Compliance Система Управления\ComplianceIssueManagementSystem\ComplianceIssueManagementSystem

Я думал об этом, потому что иногда, когда я извлек RAR файл, он говорит, что имя/путь слишком длинный. Я думал, что это будет то же самое, что и публикация visual studio 2012. так и есть!

надеюсь, что это поможет вам, ребята.


проверьте текущий проект, что ли вы сделали копию с тем же именем класса и другим именем страницы (имя класса наследует скопированный файл). В конечном счете это запутает компилятор!!!

CodeFile="Консолидированная.аспн.vb "наследует=" консолидированный


ни одно из вышеперечисленных решений не сработало для меня.

но я заметил, что из наших пяти ASP.NET проекты MVC в нашем основном решении четыре из них поместили пакет развертывания в нужное место, а один оставил его под obj\Debug.

Я сравнил проекты и нашел несоответствие. решение состояло в том, чтобы изменить это:

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

этой:

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

после того, как я внес это изменение, все пять проектов разместили свое развертывание пакеты в нужном месте.

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


я столкнулся с этим с помощью Visual Studio generated Ссылка На Сервис файлы становятся слишком длинными с точки зрения общей длины пути.

сократил их путем повторного создания ссылки на службу с помощью svcutil.exe, удаление всех исходных файлов ссылок службы.

svcutil можно назвать так:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

мой.Пространство имен должно быть заменено существующим пространством имен в созданном прокси-сервере службы (обычно находится в ссылке.цезий файл), чтобы избежать ошибок компиляции.

http://myservice следует заменить url конечной точки службы.


У меня такая же проблема. Ни одно из вышеперечисленных решений не сработало для меня.

Итак, я исключил файлы, которые не удалось скопировать во время публикации.


Я опубликовал сайт несколько раз. Но однажды, когда я изменил файл aspx, а затем попытался опубликовать веб-сайт, это привело к пустой опубликованной папке.

на моем обходном пути я нашел решение.

  1. мастер публикации будет отражать любую ошибку при публикации, но не будет копировать файл в папку назначения.

  2. чтобы узнать файл, который генерирует ошибку, просто скопируйте содержимое папки веб-сайта в новую папку и запустите visual studio с этого веб-сайта.

  3. теперь при попытке опубликовать он даст вам имя файла, содержащего ошибки.

  4. просто исправьте ошибку в исходной папке веб-сайта и попробуйте опубликовать, она будет работать так же, как и раньше.


выполните следующие действия для решения:

Build > Publish > Profile > New

создайте новый профиль и настройте его с теми же параметрами, что и существующий профиль.

теперь проект будет публиковаться правильно. Это часто происходит в результате контролируемого источником профиля публикации с другого компьютера, созданного в более новой версии Visual Studio.


первый:

  • построить в конфигурации release.
  • в свойствах проекта - > страница выберите Все файлы и папки под Пакет/Публикация Веб-Сайта.
  • перестроить решение (после очистки раствора).
  • опубликовать сейчас.

при публикации перепроверьте, что вы выбрали.
это должно сделать это. Для меня-да!:)


самый простой-это,

   1. select the file(s) that are not being copied,
   2. Press <F4> to get the properties window
   3. Make the "Build Action" property "compile" or "content" depending on what it is.
   4. Now this particular file will be included!