Веб-публикация 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
У меня была такая же проблема, однако ни один из ответов в этой теме не работал для меня. Моя проблема заключалась в том, что существует каталог, содержащий динамически генерируемые (моим приложением) статические HTML-файлы. Весь справочник не публиковался.
решение, которое сработало для меня, было найдено здесь:
одна проблема, которую я получил некоторое время назад и думал, что я должен документировать, заключалась в том, что некоторые типы файлов не загружались, когда я опубликовал проект.
типы файлов, которые были .PDF-файлы и .формат RTF.
Это произошло потому, что эти расширения файлов не были распознаны как требующие публикации Visual Studio. К счастью, это можно изменить в Visual Studio.
Выберите файлы, которые не копируются. В свойства обеспечить Создать Действие установлено значение контент.
Если это не работает следующим может быть судим.
под проект меню выберите Пакет/Публикация Web и обратите внимание на это выпадающее:
попробуйте изменить это на все файлы в этой папке проекта.
Это потому, что .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 (или наоборот), а затем опубликуйте.
нет необходимости удалять, редактировать, публиковать все, что вам не нужно.
та же проблема с 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, а затем попытался опубликовать веб-сайт, это привело к пустой опубликованной папке.
на моем обходном пути я нашел решение.
мастер публикации будет отражать любую ошибку при публикации, но не будет копировать файл в папку назначения.
чтобы узнать файл, который генерирует ошибку, просто скопируйте содержимое папки веб-сайта в новую папку и запустите visual studio с этого веб-сайта.
теперь при попытке опубликовать он даст вам имя файла, содержащего ошибки.
просто исправьте ошибку в исходной папке веб-сайта и попробуйте опубликовать, она будет работать так же, как и раньше.
выполните следующие действия для решения:
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!