web-dev-qa-db-ja.com

「公開に失敗しました」が、ビルドは成功しましたか?

Visual Studio 2008を使用しているときに「Webサイトを発行」すると、アプリケーションは正しくビルドされますが、「発行に失敗しました」というメッセージが表示されます。

enter image description here

これにはどのような理由が考えられますか?また、どのように防ぐことができますか?

44
Curt

これを試すことができます:

  1. Webアプリケーションに対してプリコンパイルを実行します。

  2. ターゲットディレクトリ(IISまたは物理ファイルフォルダ)の仮想ディレクトリ)をクリアし、(Webアプリケーションの)すべてのファイルをターゲットディレクトリにデプロイします。

出力ウィンドウでは、どの段階でWebサイトの公開操作が失敗するかを確認できます。たとえば、最初のステージで、プリコンパイル時にのみ発生するエラーがある場合、ステージ1が失敗します。または、ターゲットディレクトリの構成が正しくない場合があります。 IIS virtual dirが正しいASP.NETバージョンに設定されていないか、一部の古いファイルがロックされて消去されないようにします。ほとんどの場合、公開の失敗はIIS認証設定などのサイド設定の問題...

ソースリンク

を押すと、出力ウィンドウを開くことができます Ctrl+W、 O

16
NaveenBhat

同じ問題がありました。ログや出力にエラーや障害が表示されないため、問題を特定するのは悪夢です。 「ビルド:39成功」および「公開:1失敗」と表示されます。

問題のあるパッケージを特定するまで、すべてのNuGetパッケージを一度に1つずつ体系的に削除(およびそれを参照するコードを削除)することで問題を解決しました。

これには長い時間がかかります!

しかし、私にとっての答えはMicrosoft.Net.Compilersでした。

私のプロジェクトでどのようにそれが終わったのか分かりませんが、そのパッケージを削除するとすぐに、すべてが正常に公開されます。

編集-価値のあることですが、この問題はVS 2008、2012、2015で発生しますが、2017年にはnotが発生します。

55
SimonGoldstone

場合によっては、VSを管理者として実行してターゲットディレクトリに書き込む必要があることが原因です。

出力メッセージを確認してください。問題の解決に役立つはずです。

9
Nick

プロジェクトをC:\a\にコピーしてから公開する必要がありました。長いパスの問題が疑われます。奇妙な、しかし私のために働いた。

4
vt100

これがVisual Studioの異なるバージョンで発生するかどうかはわかりませんが、少なくとも2015 Professional Editionでは、パッケージマネージャーを使用してソリューションからすべてのNugetパッケージを更新しようとすると問題が発生します。

@SimonGoldstoneが指摘したように、問題はパッケージ"Microsoft.Net.Compilers"が原因です。デフォルトでは、新しいWebアプリケーションの作成中にパッケージがソリューションに追加されます。デフォルトのバージョン1.0.0では、問題は発生しません。 2.4.0まで最新バージョンでテストを続けることができ、すべてが正常に機能しましたが、2.6.0以降はすべてが開始されます。更新が厳密に必要な場合は、前述のパッケージをバージョン2.4.0まで更新することをお勧めします。いくつかの調査を行った後、2.4.0以降のバージョンでいくつかのバグが導入され、長期的に修正されていないようです。興味深いのは、この問題が基本的な品質管理チェックポイントなしでNugetにどのように含まれるかです。

3
José Lugo

結論は、別のVSエディションを試して、それが機能するかどうかを確認することです。

これが私のためにしたことです。

VS 2013 ProとVisual Studio 2015のコミュニティがあります。私はMVCプロジェクトで作業するためにいずれかを使用していますが、すべてがうまくいきました。その後、突然構築されたVS 2013はすべて公開できませんでした。いくつかの愚かな以外のエラーはありませんでした...すべてのパスからコードが返されません...

VS 2017で開くと、同じプロジェクトが正常に公開されました。私はコンパイルの問題を疑っています-それが失敗する段階であった原因である。

時間を少しでも節約できることを願っています。

3

今日、この同じ問題に遭遇しました。これは、画像を探すために画像フォルダを開いたときに作成されたThumbs.dbファイルが原因でした。ファイルを削除すると、プロジェクトが正常にデプロイされました。これが同じ状況の他の誰かを助けることを願っています。

1
Tammy Spencer

公開する前に、ターゲットフォルダーを(手動で)空にしてください。時々vsがファイルを削除できないため、パブリッシュに失敗します

1
nvasquez

プロジェクトBInディレクトリを確認します。ページまたはコントロールのDLLが必要です。パブリッシュ中に再作成する必要があります。したがって、除外または削除します。

1
Dilshad

これには多くの提案された解決策があります。彼らは問題を複雑にしていると思います。私は次のことがうまくいったことがわかりました:

  1. ソリューションのobj(Release or Debug)フォルダーを見つけます
  2. ReleaseまたはDebugフォルダー内で、「AspnetCompileMerge」フォルダーの内容を削除します

今すぐ公開してみてください。

0
NeilR

再構築を試み、ソリューション内の他のプロジェクトを正しく公開し、公開場所をマップされたネットワークドライブにプッシュする代わりにC:ドライブ(ローカル接続)に変更した後、エラー出力のみが発生する問題がまだありました前記:

========== Build: 5 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

私のソリューションはx86を対象としていますが、Gitマージ中に、このプロジェクトのプロファイルがAny CPUに切り替えられたと思います。プロジェクト用のx86プロファイルを作成し、それを発行目標とアクティブなソリューション構成のターゲットに一致させた後、再び正常に発行できました。

0
legistrate

ウェブサイトプロジェクトでVS2017でも同じ問題が発生しました。ビルドは機能しましたが、公開するとエラーが発生しました:Error CS0012: The type 'System.Net.Http.HttpMessageHandler' is defined in an Assembly that is not referenced. You must add a reference to Assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.私のプロジェクトはすべてSystem.Net.Httpへの参照をすでに持っているため、非常に混乱していました。

修正するには、System.Net.Http.dllをmy website project/binフォルダーにコピーして、publishがそれを見つけてWebホストにコピーできるようにする必要がありました。別のプロジェクトの参照(クラスライブラリ)、System.Net.Http.dllのプロパティ、パス(C:\ Program Files(x86)\ Reference Assemblies\Microsoft \)を見て、System.Net.Http.dllを見つけました。 Framework.NetFramework\v4.6\System.Net.Http.dll)。

0

私にとっては簡単でした-distフォルダーはロックされていました。ロックを解除してロックを解除すると、公開が再開されました。

0
imlarry

私はiamを遅く知っていますが、このクエリを検索する人に使用すべきだと思います。

すべてのnugetパッケージをアンインストールしてから、ソリューションをクリーンおよび再構築し、今すぐ公開をクリックします。それが機能することを確認すると、公開が開始され、正しく機能するようになります。

0
sathish v

Web.configに登録されている複数のユーザーコントロールがあり、.ascxファイルヘッダーにClassNameがあります。通常のビルドではすべてが正常に機能しますが、パブリッシュではこれらのクラス名は認識されなくなりました。ある時点で、エラーは通常のコードファイルではなく、公開用の一時ディレクトリのコピーにあることがわかりました。

[公開中にプリコンパイル]をオンにしました([設定]> [ファイル公開オプション]にあります)。このオプションをオフにすると、うまくいきました。

0
macnerd

私の場合、マップされたネットワークドライブのディレクトリに公開していましたが、出力パネル/ウィンドウは場所が存在しないことを示していました。パスは正しく、ドライブは完全にアクセス可能でした。 ...ボタンを使用してVisual Studioで発行するパスを再設定すると、問題は解決しました。

0
Sam