Сборка успешна, но публикация не удалась - PullRequest
37 голосов
/ 01 августа 2011

Вплоть до двух дней назад я мог использовать опцию «Публикация в Интернете» в 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

но ничего, что я изменил, не исправило ошибку.

Любая информация о том, что может быть причиной проблемы, будет принята с благодарностью:)

EDIT:

Проблема фактически решилась сама после последней перезагрузки. Должно быть, я перезагружался 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 в виртуальный каталог веб-сайта, а затем просто ради удовольствия попытался опубликовать это утро, и все работало нормально.

Ответы [ 19 ]

37 голосов
/ 16 ноября 2011

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

  • Файл был удален, но проект все еще ссылается на него.Не удастся скомпилировать, не удастся опубликовать.
  • Файл был добавлен, но на него не ссылается проект.Может компилироваться, зависит от того, ссылаются ли на класс / методы в другом месте проекта / решения.Если компилируется, опубликует.
  • Файл был добавлен, но слияние проекта привело к тому, что он несколько раз появлялся в списке проектов.Скомпилируется, не будет публиковаться.

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

17 голосов
/ 29 апреля 2016

Я также столкнулся с той же проблемой, я только что удалил файл, помеченный желтым цветом из Решение Visual Studio Project , и оно работало нормально для меня.

10 голосов
/ 09 ноября 2015

Исключить папку bin (и / или) obj из проекта и опубликовать.Это сработало для меня

4 голосов
/ 16 февраля 2015

Недавно я опубликовал эту проблему в Azure.В итоге я удалил все файлы в папке bin (удалил все файлы в обозревателе решений Visual Studio в папке bin, но оставил саму папку bin пустым) и перестроил проект.Это, казалось, делало визуальную студию счастливой, и лазурная публикация работала.надеюсь, это поможет

3 голосов
/ 13 января 2016

Это сработало для меня: вручную удалите папку obj, пересоберите, а затем опубликуйте.Как-то застряло какое-то разрешение в папке obj, и удаление / воссоздание папки устранило ошибку.

3 голосов
/ 16 ноября 2016

Я удалил папку bin & obj, а также содержимое inetpub / wwwroot / myapp и решил проблему

2 голосов
/ 02 июня 2017

ничего не работает для меня.удаление файла obj и bin, очистка файла, изменение имени веб-службы, сокращение имени веб-службы.

Но вообще,

+ Расширение файла Reference.svcmap из Visual Studio.

+ Обновлениессылка.

+ И удалить Желтое предупреждение Источники данных.

у меня работает

1 голос
/ 28 июня 2016

открыть файл projectname.csproj в блокноте и удалить строку obj \ debug \ project name.csprojResolveAsseblyReference.cache

1 голос
/ 05 февраля 2017

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

Причина ошибки: в visual studio я включил файл, а затем удалил его из файловой системы (но не из visual studio).VS все еще имел ссылку на этот файл.Поэтому, как только я удалил ссылку из VS, я смог успешно опубликовать!

0 голосов
/ 27 марта 2019

Я также сталкивался с этой проблемой, когда публиковал свой сайт, в моем случае ссылка была добавлена, но в папке bin ее там не было, поэтому, пожалуйста, установите снова, какая ссылка отсутствует на выходе. Надеюсь, это поможет

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