web-dev-qa-db-ja.com

ビルドは成功するが、公開は失敗する

2日前まで、プロジェクトを右クリックしてコンテキストメニューの[発行]ボタンをクリックすることで、Visual Studio 2010の[Webの発行]オプションを使用できました。同じことをしようとすると、次の出力が得られます。

------ 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をWebサイトの仮想ディレクトリに手動で移動していましたが、今朝はキックのために今朝公開を試みましたが、すべてうまくいきました。

39
p.wilt

私の経験では、これはファイルがソース管理の異なるブランチから追加/削除され、不完全なマージによりプロジェクトファイル構造と実際のファイル構造が異なる場合に発生する可能性があります。

これは、いくつかのオプションのいずれかです。

  • ファイルは削除されましたが、プロジェクトはまだそれを参照しています。コンパイルに失敗し、公開に失敗します。
  • ファイルは追加されましたが、プロジェクトによって参照されていません。コンパイルされる場合があります。クラス/メソッドがプロジェクト/ソリューションの他の場所で参照されているかどうかによって異なります。コンパイルする場合、公開します。
  • ファイルが追加されましたが、プロジェクトのマージにより、プロジェクトリストに複数回表示されました。コンパイルされ、公開に失敗します。

解決策は、ソース管理ログを調べ、上記の問題についてプロジェクトファイルへの不正なマージを特定し、それに応じてプロジェクトファイルを修正することです。

37
Oded

私も同じ問題に直面しました。黄色のマークされたファイルvisual studioプロジェクトソリューションから削除しただけで、うまくいきました。

17
Anjan Kant

プロジェクトからbin(および/または)objフォルダーを除外して公開します。これは私のために働いた

11

最近、この問題がAzureに発行されました。 binフォルダー内のすべてのファイルを削除しました(binフォルダーの下にあるVisual Studioソリューションエクスプローラー内のすべてのファイルを削除しましたが、binフォルダー自体は空のままにします)。プロジェクトを再構築します。これにより、ビジュアルスタジオが幸せになり、Azureのパブリッシュが機能したようです。お役に立てれば

これは私のために働いた:objフォルダーを手動で削除し、再構築してから公開します。どういうわけかobjフォルダーの一部の許可がスタックし、フォルダーを削除/再作成するとエラーがクリアされました。

3
dlchambers

Binとobjフォルダーを削除し、inetpub/wwwroot/myappの内容も問題解決しました

3
Dulce Corona

何も私にとってはうまくいきません。 objおよびbinファイルの削除-Webサービス名の変更-Webサービス名の短縮。

しかし、まったく

+ Visual StudioからReference.svcmapを展開します。

+参照を更新します。

+そして削除黄色の警告データソース。

私のために働く

2
elfekz

projectname.csprojファイルをメモ帳で開き、obj\debug\project name.csprojResolveAsseblyReference.cache行を削除します

1
nativegrip

私は最近同じ問題に直面しました。そして、実際には、欠落しているファイルを検索することで追跡しました。

エラーの理由:Visual Studioにファイルを含め、後でファイルシステムから削除しました(ただし、Visual Studioからは削除しませんでした)。 VSはまだそのファイルへの参照を持っていました。 VSから参照を削除すると、正常に公開できました。

1
Paul Salvi

これが誰かを助ける場合、VS 2015の私のMVCプロジェクトでは、このファイルでした。

0
Cuppachee

私は自分のサイトを公開しているときにこの問題に直面しましたが、私の場合は参照が追加されましたが、binフォルダにはありませんでしたので、outputにない参照を再インストールしてください。

0
saurav singh

これを解決するには、プロジェクトから「packages.config」というファイルを削除しました。このファイルには、欠落しているというフラグが付けられていました。その後、Publishは問題なく機能しました。

0
Ron P

この問題は、プロジェクトをあるソリューションから別のソリューションに移動するか、別のソース管理に移動するために発生する可能性があります。

この問題を解決する簡単な方法:

  1. 現在のプロジェクトのバックアップを取り、現在のプロジェクトをソリューションから削除します。

  2. ソリューションに新しいプロジェクトを追加し、バックアップからファイルを含めて、プロジェクトを再構築して完了します。

0
Ram Balwad

Visual Studioの既存の公開プロファイルをすべて削除しました->ソリューションエクスプローラー-> My Project Node-> Properties-> Profilesの公開ソリューションエクスプローラーでProjectを右クリックすることで同じことができます->公開-> [プロファイル]タブ-> [プロファイルの管理]->すべてのプロファイルの削除マシンに既に保存されている場合は、Azureから関連するプロファイルをダウンロードするか、ディレクトリから選択して選択し、プロジェクトをクリーンアップして再構築します。プロジェクトはリリースモードでビルドされ、「リリース」パブリッシュ->設定->構成今すぐパブリッシュも選択しました。

0
Faran Shabbir

その原因は、異なる環境からプロジェクトを転送することです。これを解決するには、プロジェクトディレクトリおよびソリューションエクスプローラーから「obj」フォルダーを右クリックして、「obj」フォルダーを削除します。

その後、プロジェクトをビルドして公開します。正常に動作します。

0
Vijendra Rana

Nugetsのパッケージフォルダーの名前を変更するだけです。 Visual Studioは必要なパッケージを自動的に取得し、ビルドは成功し、発行も機能します。

0
Sanjay Sharma

VSが要求した不足しているファイルをBINフォルダーに手動でコピーして貼り付ける必要がありました。 .pbd、.xmlコピーしないことがあります。

0
JoshYates1980

パブリッシュプロファイルを削除してコミットし、パブリッシュプロファイルを最初から再作成する必要がありました。

0
Jeremy

folderをプロジェクト(私の場合はckeditor)に手動でコピーすると、同様の問題が発生しました。それは問題なく構築され、ローカルで実行されました。ただし、フォルダーの公開は無視されました。 作成空のフォルダーを最初に作成してから、フォルダーの内容をコピーする必要がありました。 Visual Studioは、アイテムが作成されたことを知る必要があります。それは、公開後に認識されたためです。

0
Off The Gold