У меня есть проект веб-приложения в VS 2012, и когда я использую инструмент веб-публикации, он успешно сгенерирован, но не копирует никакие файлы в цель публикации (в этом случае файловая система).
Если я посмотрю на вывод сборки, я вижу, что все скопировано в obj\Release\Package\PackageTmp\правильно, но затем все, что я вижу в выводе сборки, следующее:
4 > Готовый проект здания "{Проект}.csproj".
4 > Удаление существующих файлов...
4 > Папка для публикации /...
4 > ========== Build: 3 удалось, 0 не удалось, 1 обновлено, 0 пропущено ==========
========== Опубликовать: 1 удалось, 0 не удалось, 0 пропущено ==========
Несмотря на то, что он говорит, что публикация выполнена успешно, в каталоге для публикации нет файлов.
Я видел это в нескольких проектах, и иногда кажется, что решения Solution/Platform вызывают эту проблему, но я не смог точно определить причину этого.
Кто-нибудь еще видел это или понимает, как правильно это сделать?
UPDATE:
Возможно, я нашел обходное решение для этого. Я просто повторил это снова, и я возился с настройками публикации. Как только я изменил выбранную конфигурацию на вкладке "Настройки" на другую конфигурацию, а затем вернулся к той, которую я хотел использовать, все мои файлы снова начали публиковать. Надеюсь, это будет работать и в других проектах в будущем.
ОБНОВЛЕНИЕ 2:
Я отправил ошибку на Microsoft Connect и услышал от разработчика в команде VS Web Developer. Он сказал, что они исправили эту проблему в своих внутренних сборках и вскоре опубликуют обновление для инструмента публикации, которое устранит эту проблему.
ОБНОВЛЕНИЕ 3:
Это недавно было исправлено с обновлением Visual Studio 2012 2
Это может быть вызвано решениями/проектами, которые были созданы с помощью RC vs2012. Это случилось со мной несколько месяцев назад и устранило проблему, убедившись, что мои конфигурации сборки решений соответствуют моим конфигурациям проектов...
Недавно я столкнулся с той же проблемой при открытии того же решения, которое было создано в vs2012RC с помощью VS2012 Express для Интернета. Я сделал именно то, что предложил оригинальный плакат, и он исправил мою проблему.
Вот нить, которая ведет меня к ответу:
connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails
Соответствующий ответ из беседы выше, который мне помог:
Отправлено Microsoft на 13.06.2012 в 12:00 PM Привет, Андрей,
Это была ошибка в том, как мы обрабатываем конфигурацию решения по сравнению с конфигурации проекта. Мы неправильно предположили, что они будут то же (например, решение Release | x86 будет иметь каждый проект, установленный Release | x86), что заставило нас использовать неправильную сборку свойства для публикации файлов.
Обходной путь заключается в том, чтобы сделать конфигурацию решения и построить соответствие конфигурации. Эта проблема будет исправлена в следующем выпуске Visual Studio 2012.
Спасибо, - Джимми Льюис SDET, команда разработчиков Visual Web
Такая же проблема. Обходной путь заключался в изменении параметров публикации от выпуска до отладки. Повторно опубликуйте, и они вернутся к релизу...
Чтобы сделать это немного дальше. У вас есть два файла, которые создаются при создании профиля публикации.
NewProfile.pubxml and
NewProfile.pubxml.user
Когда вы открываете проект, который имеет эти файлы в папке PublishProfile из исходного элемента управления, он имеет только файл pubxml, а не файл 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>
node и помещаете его в файл pubxml.user, ваши PublishProfiles снова начнут работать.
Простое исправление - удалить профиль публикации и создать новый.
когда вы щелкните правой кнопкой мыши по своему решению и выберите публикацию, у вас есть профиль. удалите это и создайте новый.
это исправит его.
У меня была проблема с переключением с 2010 по 2012 год
У меня была такая же ошибка, и я меняю настройку с на отладку и проблема решена.
Я пробовал все эти решения, но это тот, который работает каждый раз.
Мы просто изменим "Метод публикации:" из "Файловой системы" на, например, "Веб-развертывание" и сразу же вернем его в "Файловая система".
Это связано с тем, что .pubxml.user содержит требуемую информацию для публикации, и этот файл не входит (и не должен) быть включенным в элемент управления источником. Чтобы исправить эту ошибку VS, скопируйте информацию из файла .pubxml.user в файл .pubxml. Соответствующие свойства:
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
Поместите их в свой .pubxml, и вам должно быть хорошо идти.
У меня была такая же проблема, однако ни один из ответов в этой теме не работал у меня. Моя проблема заключалась в том, что есть каталог, содержащий динамически создаваемые статические HTML файлы (по моему приложению). Весь каталог не публиковался.
Решение, которое сработало для меня, было найдено здесь:
Одна проблема, я получил некоторое время назад и думал, что должен документировать, что некоторые типы файлов не были загружены, когда я опубликовал свой проект.
В качестве типов файлов были файлы .pdf и .rtf.
Причина этого в том, что эти расширения файлов не были признаны требующими публикации Visual Studio. К счастью, это можно изменить в Visual Studio.
Выберите файл (ы), который не копируется arent. В Свойства убедитесь, что для параметра Сборка установлено значение Контент.
Если это не работает, можно попробовать следующее.
В меню Проект выберите Пакет/Публикация Веб и обратите внимание на это:
Попробуйте изменить это на все файлы в этой папке проекта.
У меня была одна проблема для нескольких проектов. Единственные хиты, похоже, являются веб-проектами. Удаление и повторное создание профиля решает проблему только один раз. Кроме того, сравнение созданного publishxml не дает различий, поэтому оно вообще не связано с профилем.
Обходной путь, упомянутый OP для изменения проблем сборки взад и вперед, кажется единственным надежным решением в это время.
Следующие работали для меня:
Просто измените с Release > Debug > Release (или наоборот) и затем опубликуйте.
Не нужно удалять, редактировать, публиковать все, что вам не нужно.
Здесь у нас была та же проблема.
Мы просто изменим "Метод публикации:" из "Файловой системы" на, например, "Веб-развертывание" и сразу же вернем его в "Файловая система".
Я столкнулся с той же проблемой на VS 2010, после проверки публикации публикации, журналов событий, включения и проверки журналов визуальной студии и т.д. Затем я решил удалить веб-публикацию (через add/remove), которая, как мне кажется, была недавно обновлена до версии 1.0.30810.0. Это разрешило проблему.
Моя проблема была в неправильной конфигурации файла myproject.csproj. Файл '_address-step1-stored.cshtml' не копировался при публикации. "None" изменен на "Content", теперь все в порядке.
None
в файле .csproj или полностью отсутствовали в проекте (там, но не «использовались»)! Это полностью объясняет, почему запуск локально всегда работал, а публикация - никогда. : D
Такая же проблема с VS 2012 Pro с целью публикации диска. Проект использовался для публикации правильно, но начал выполнять эту проблему, когда ему не удалось скопировать файлы в папку назначения.
Решение заключалось в том, чтобы отредактировать профиль публикации, изменить режим из Release (Любой процессор), чтобы отлаживать его обратно в Release (любой процессор). Это приведет к перезаписыванию файла PublishProfiles\projname.pubxml.user(как описано выше). Похоже, что добавлены элементы LastUsedBuild, LastUsedPlatform и TimeStampOfAssociatedLegacyPublishXmlFile в группе свойств node. По завершении публикации добавляется еще одна ItemGroup с отдельными файлами и время публикации.
С той же проблемой недавно в VS 2013 в проекте MVC, в котором я импортировал CMS Umbraco. Я не мог публиковать. Ответ выше помог, хотя мне нужно было время, чтобы выяснить, что я на самом деле должен делать в VS. Это потребовало некоторых исследований, например. на MS блогов, чтобы узнать. Я пытаюсь сказать это просто:
Я нашел, что могу обойти эту проблему, изменив целевое местоположение с obj/[release | stage |..] на новый путь за пределами папок решения, например, c:\deployment. Кажется, что VS 2012 запутался и, возможно, отказался от чего-то в процессе публикации.
Matt
В этом случае я в конечном итоге отказался от борьбы с Web Deploy, чтобы заставить его делать то, что я хотел (копировать файлы для развертывания и ничего больше), поэтому я написал его в PowerShell и действительно доволен результатом. Это намного быстрее, чем все, что я пробовал через MSBuild/Web Publish, по-видимому, потому, что эти методы все еще делали то, что мне не нужно.
Здесь gist (буквально):
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), но его можно легко подключить к событию после сборки.
Это действие было успешным для меня:
Убейте опубликовать профили в "Свойствах > Опубликоватьпрофили > xxxx.pubxml" и снова заново настройте.
Для этого выполните следующие действия:
Build > Publish > Profile > New
Создайте новый профиль и настройте его с теми же настройками, что и существующий профиль.
Теперь проект будет опубликован правильно. Это часто происходит в результате контролируемого источником публикации профиля с другого компьютера, который был создан в более новой версии Visual Studio.
Я несколько раз публиковал сайт. Но однажды, когда я модифицировал некоторый файл aspx, а затем попытался опубликовать веб-сайт, это привело к пустой опубликованной папке.
На моем обходном пути я нашел решение.
Мастер публикации будет отображать любую ошибку при публикации, но не будет скопировать какой-либо файл в папку назначения.
Чтобы узнать файл, который генерирует ошибку, просто скопируйте содержимое папки веб-сайта в новую папку и запустите визуальную студию с этого веб-сайта.
Теперь, когда вы пытаетесь опубликовать его, вы получите имя файла, содержащее ошибки.
Просто исправьте ошибку в исходной папке веб-сайта и попытайтесь опубликовать ее, она будет работать так, как раньше.
У меня такая же проблема. Ни один из вышеперечисленных решений не работал у меня.
Итак, я исключил файлы, которые не удалось скопировать при публикации.
Я столкнулся с этим, когда файлы Visual Studio с Service Reference стали слишком длинными с точки зрения общей длины пути.
Сократить их, повторно создав ссылку на службу, используя 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
My.Namespace следует заменить существующим пространством имен в созданном прокси-сервере службы (обычно в файле Reference.cs), чтобы избежать ошибок компиляции.
http://myservice
следует заменить URL-адресом конечной точки службы.
Ни один из вышеперечисленных решений не работал у меня.
Но я заметил, что из наших пяти проектов 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" />
После того, как я сделал это изменение, все пять проектов поставили свои пакеты развертывания в нужное место.
(Извините за длинные строки, но я не смог найти лучший способ их конденсировать.)
Проверьте свой текущий проект на то, что вы сделали копию с тем же именем класса и другим именем страницы (имя класса наследует скопированный файл). В конечном итоге это смутит компилятор!!!
CodeFile = "Consolidated.aspx.vb" Inherits = "Consolidated
Наконец-то я нашел ответ. Все вышеперечисленные решения не работают для меня.
Что я сделал, так это то, что я перемещаю проект на диск c, меняя папку проекта на что-то более короткое и быстро публикую.
причина, по которой он сбился с моей стороны, заключается в том, что у меня было очень длинное название проекта /heirarchy.
C:\Users\user\Desktop\Система управления соблюдением \ComplianceIssueManagementSystem\ComplianceIssueManagementSystem
Я подумал об этом, потому что иногда, когда я извлекал rar файл, он говорит, что имя/путь слишком длинный. Я думал, что это будет так же, как публикация visual studio 2012. и он делает!
надеюсь, что это поможет вам, ребята.
В Visual Studio 2012 переключение между релизами все еще вызывает проблемы.
Мы добавили событие pre-build для удаления папки obj
: del /s /f /q $(ProjectDir)\obj
и исправили проблему публикации. Чистка работает иногда, но не всегда.
У меня есть веб-приложение с несколькими другими ссылочными проектами в решении. В прошлом я успешно развертывал с одной конфигурацией публикации. Я изменил конфигурацию проекта с отладки на выпуск для проекта, который был пропущен в прошлом. В следующий раз, когда я попытался развернуть, я получил эти симптомы, когда публикация просто терпит неудачу - он ничего не делает и говорит, что это удалось:
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, чтобы заставить его сохранить удаление, снова открыть его и воссоздать профиль публикации с нуля. Как только я это сделал, я снова смог опубликовать.
Win8 VS2012, дерьмовый ноутбук.
Во-первых:
Во время публикации перепроверьте, что вы выбрали.
это должно сделать это. Это было для меня!:)
Самый простой способ:
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!
2>Done building project "{Project}.csproj".
2>Deleting existing files...
2>Publishing folder /...
2>Publishing folder bin...
2>Publishing folder Controls...
2>Publishing folder ExternalReferences...