Сборка успешна, но публикация не удалась
Еще два дня назад я мог использовать опцию "Публикация в Интернете" в Visual Studio 2010, щелкая правой кнопкой мыши по моему проекту и нажимая кнопку публикации в контекстном меню. Теперь, когда я пытаюсь сделать то же самое, я получаю следующий вывод:
------ Build started: Project: ELMS, Configuration: Debug Any CPU ------
Build started 8/1/2011 3:08:03 PM.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are
up-to-date with respect to the input files.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways:
Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to
"bin\lib\Newtonsoft.Json.Net35.dll".
CopyFilesToOutputDirectory:
LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll
Build succeeded.
Time Elapsed 00:00:00.04
------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
Object reference not set to an instance of an object.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
Это при попытке публикации на localhost (для целей отладки)
Вот настройки профиля публикации, который я использую:
Publish Method: Web Deploy
Service URL: localhost
Site/application: default web site/ELMS
[x] Mark as IIS application on destination
[x] Leave extra files on destination (do not delete)
Я уже пытался:
- Cleaning/rebuilding the project
- Deleting the bin folder of the project
- Running reg_iis.exe -i
- Reinstalling VS2010
но ничего, что я изменил, не исправило ошибку.
Любое понимание того, что может быть причиной проблемы, будет с благодарностью:)
РЕДАКТИРОВАТЬ:
Проблема фактически разрешилась сама после последней перезагрузки. Должно быть, я перезагружался 6-7 раз с тех пор, как проблема впервые проявилась, но на этот раз сообщения об объекте нет. Вот журнал из сборки / публикации сейчас:
------ Build started: Project: LMS, Configuration: Debug Any CPU ------
Build started 8/3/2011 9:10:12 AM.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways:
Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to "bin\lib\Newtonsoft.Json.Net35.dll".
CopyFilesToOutputDirectory:
LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll
Build succeeded.
Time Elapsed 00:00:00.04
------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
Gather all files from Project items @(IntermediateAssembly). Adding:
bin\LMS.dll to bin\LMS.dll
bin\LMS.pdb to bin\LMS.pdb
Gather all files from Project items @(Content). Adding:
Global.asax;lib\Newtonsoft.Json.Net35.dll;MtsSchemas\MtsSchema.xml;Web.config
Gather all files from Project output (IntermediateSatelliteAssembliesWithTargetPath).
Adding:
Gather all files from Project items
@(ReferenceCopyLocalPaths,ReferenceComWrappersToCopyLocal,ResolvedIsolatedComModules,_DeploymentLooseManifestFile,NativeReferenceFile).
Gather all files from Project items @(AllExtraReferenceFiles). Adding:
Gather all files from Project items
@(_SourceItemsToCopyToOutputDirectoryAlways,_SourceItemsToCopyToOutputDirectory). Adding:
bin\lib\Newtonsoft.Json.Net35.dll
Gather all files from Project items @(_binDeployableAssemblies). Adding:
Publish Pipeline Collect Files Phase
Found The following for Config tranformation:
Web.config
Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\TransformWebConfig\transformed\".
Publish Pipeline Transform Phase
Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\CSAutoParameterize\transformed\".
Copying Web.config to obj\Debug\CSAutoParameterize\original\Web.config.
Transforming Source File: C:\SVN\TrakNet\trunk\MTS\Web.config
Applying Transform File: <?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add
connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}"
xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" />
</connectionStrings>
</configuration>
Output File: obj\Debug\CSAutoParameterize\transformed\Web.config
Transformation succeeded
Auto ConnectionString Transformed Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
Creating directory "obj\Debug\Package\PackageTmp".
Copying all files to temporary location below for package/publish:
obj\Debug\Package\PackageTmp.
Copying bin\LMS.dll to obj\Debug\Package\PackageTmp\bin\LMS.dll.
Copying bin\LMS.pdb to obj\Debug\Package\PackageTmp\bin\LMS.pdb.
Copying Global.asax to obj\Debug\Package\PackageTmp\Global.asax.
Copying lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\lib\Newtonsoft.Json.Net35.dll.
Copying MtsSchemas\MtsSchema.xml to obj\Debug\Package\PackageTmp\MtsSchemas\MtsSchema.xml.
Copying C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\bin\lib\Newtonsoft.Json.Net35.dll.
Copying obj\Debug\CSAutoParameterize\transformed\Web.config to obj\Debug\Package\PackageTmp\Web.config.
Publish Pipeline Deploy phase Pre-Deploy CopyAllFilesToOneFolder Stage
Generate source manifest file for Web Deploy package/publish ...
Creating directory "obj\Debug\Database".
Starting Web deployment task from source:manifest(C:\SVN\TrakNet\trunk\MTS\obj\Debug\Package\LMS.SourceManifest.xml) to Destination:auto().
Updating filePath (default web site/LMS\bin\ELMS.dll).
Updating filePath (default web site/LMS\bin\ELMS.pdb).
Updating filePath (default web site/LMS\bin\lib\Newtonsoft.Json.Net35.dll).
Updating filePath (default web site/LMS\lib\Newtonsoft.Json.Net35.dll).
Updating filePath (default web site/LMS\Web.config).
Updating setAcl (default web site/LMS).
Updating setAcl (default web site/LMS).
Successfully executed Web deployment task.
Publish is successfully deployed.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Как я уже сказал: понятия не имею, что изменилось. Я вручную перемещал библиотеки DLL в виртуальный каталог веб-сайта, а затем просто ради удовольствия попытался опубликовать это утро, и все работало нормально.
22 ответа
По моему опыту, это может происходить, когда файлы добавляются / удаляются из разных ветвей вашего исходного кода, и несовершенное слияние приводит к расхождению структуры файла проекта и фактической структуры файла.
Это может быть один из нескольких вариантов:
- Файл был удален, но проект все еще ссылается на него. Не удастся скомпилировать, не удастся опубликовать.
- Файл был добавлен, но проект на него не ссылается. Может компилироваться, зависит от того, ссылаются ли на класс / методы в другом месте проекта / решения. Если скомпилирует, опубликую.
- Файл был добавлен, но при слиянии проекта он несколько раз появлялся в списке проектов. Скомпилирует, не сможет опубликовать.
Решение состоит в том, чтобы просмотреть журналы управления исходным кодом и попытаться выявить неправильное слияние с файлом проекта для вышеуказанных проблем, а затем исправить файл проекта соответствующим образом.
Я также столкнулся с той же проблемой, я просто удалил отмеченный желтым цветом файл из решения проекта Visual Studio, и он работал нормально для меня.
Исключить папку obj из проекта и опубликовать. Это сработало для меня
Я недавно опубликовал эту проблему в Azure. В итоге я удалил все файлы в папке bin (удалил все файлы изнутри обозревателя решений Visual Studio в папке bin, но оставил саму папку bin пустым) и перестроил проект. Это, казалось, делало визуальную студию счастливой, и лазурная публикация работала. надеюсь это поможет
Я удалил папку bin & obj, а также содержимое inetpub/wwwroot/myapp и решил проблему
Это сработало для меня: вручную удалите папку obj, пересоберите, а затем опубликуйте. Как-то застряло какое-то разрешение в папке obj, и удаление / воссоздание папки устранило ошибку.
Ничто не работает для меня. удаление файла obj и bin, очистка файла, изменение имени веб-службы, сокращение имени веб-службы.
Но вообще,
+ Расширьте свой Reference.svcmap из визуальной студии.
+ Обновить ссылку.
+ И удалить желтые источники данных предупреждения.
работает для меня
Я недавно столкнулся с той же проблемой. И я фактически проследил это, ища файл, который отсутствовал.
Причина ошибки: в Visual Studio я включил файл, а затем удалил его из файловой системы (но не из Visual Studio). VS все еще имел ссылку на этот файл. Поэтому, как только я удалил ссылку из VS, я смог успешно опубликовать!
Откройте файл projectname.csproj в блокноте и удалите строку obj\debug\project name.csprojResolveAsseblyReference.cache
Мне пришлось удалить профиль публикации, зафиксировать, а затем заново создать профиль публикации с нуля.
Мне пришлось вручную скопировать и вставить недостающие файлы, которые VS запрашивал, в папку BIN. .pbd, .xml Иногда они не копируются.
Я хотел бы добавить, что в моем случае, если вы используете Visual Studio 2015 и установили пакет Microsoft.Net.Compilers NuGet в любом из ваших проектов, убедитесь, что эта версия пакета не выше 2.4.
Причина, по которой это сочетание является плохим, заключается в том, что VS 2015 использует MSBuild v14, а для пакета требуется MSBuild v15 или выше, если версия > 2.4.
Я столкнулся с подобной проблемой, когда я вручную скопировал папку в проект (в моем случае ckeditor). Он построен хорошо и работает на месте без проблем. Однако при публикации папка была проигнорирована. Оказывается, я должен был сначала создать пустую папку, а затем скопировать содержимое папки. Visual Studio должна знать, что элемент был создан, он появляется, потому что после этого он был распознан при публикации.
В случае, если это кому-нибудь поможет, для моего проекта MVC в VS 2015 это был следующий файл: File System.pubxml.user В каталоге профиля публикации, в том числе он вызывал ошибки компиляции, но удаление его позволило его опубликовать!
В моем случае это был удаленный файл из папки Projects. Он был добавлен в проект, но не был в исходной папке. Я обнаружил, что в визуальной студии он отображается с восклицательным знаком:
когда я исключил файловую форму, публикация проекта начала работать
У меня была проблема в vs2017, я просто исключаю папку bin и obj из проекта и публикую проект. это работает.
Я удалил все существующие профили публикации в Visual Studio -> Обозреватель решений -> Мой проектный узел -> Свойства -> Опубликовать профили. То же самое можно сделать, щелкнув правой кнопкой мыши Project в Обозревателе решений -> Опубликовать -> вкладка Профиль -> Управление профилями - > Удалить все профили Теперь загрузите соответствующий профиль из Azure или выберите из своего каталога, если он уже сохранен на вашем компьютере, и выберите его. Затем очистите и перестройте проект. Убедитесь, что вы выбрали проект, созданный в режиме Release, и также выбрали "Release" Publish -> Settings -> Configuration Now Publish, это сработало для меня.
Я решил эту проблему, удалив файл "packages.config" из моего проекта, который был помечен как отсутствующий. После этого Publish работал нормально.
Просто переименуйте папку с пакетами Nugets. Visual Studio автоматически получит необходимые пакеты, и сборка будет успешной, и публикация тоже будет работать.
Причиной этого является перенос вашего проекта из другой среды. Чтобы решить эту проблему, удалите папку "obj" из каталога вашего проекта, а также из обозревателя решений, щелкнув правой кнопкой мыши папку "obj".
После этого постройте свой проект и опубликуйте его. Это будет работать нормально.
Эта проблема может возникнуть из-за переноса проекта из одного решения в другое или из-за перехода на другой источник управления.
Простой способ решить эту проблему:
Возьмите резервную копию текущего проекта и удалите текущий проект из решения.
Добавьте новый проект в свое решение и включите ваши файлы из резервной копии и перестройте свой проект, и все готово.
Я также столкнулся с этой проблемой, когда я публиковал свой сайт, в моем случае ссылка была добавлена, но в папке bin ее там не было, поэтому, пожалуйста, установите снова, какая ссылка отсутствует на выходе. Я надеюсь, что это поможет