Visual Studio 2012 Web Publishがファイルをコピーしない


229

VS 2012にWebアプリケーションプロジェクトがあり、Web公開ツールを使用すると正常にビルドされますが、公開ターゲット(この場合はファイルシステム)にファイルがコピーされません。

ビルド出力を見ると、すべてが正しくobj \ Release \ Package \ PackageTmp \にコピーされていることがわかりますが、ビルド出力に表示されるのは次のとおりです。

4>プロジェクト「{Project} .csproj」の作成が完了しました。
4>既存のファイルを削除しています...
4>フォルダを発行しています/ ...
4> ==========ビルド:3成功、0失敗、1最新、0スキップ===== =====
==========公開:1件成功、0件失敗、0件スキップ==========

公開が成功したと表示されていても、公開のターゲットディレクトリにファイルがありません。

これを複数のプロジェクトで見たことがありますが、ソリューション/プラットフォームの構成がこの問題を引き起こしているように見えることがありますが、正確な原因を特定することができませんでした。

他の誰かがこれが起こっているのを見たり、これを正しく機能させる方法についてアイデアを持っていますか?

更新:

これの回避策を見つけたかもしれません。私はこれをもう一度起こしただけで、公開設定をいじりました。[設定]タブで選択した構成を別の構成に変更してから、すべてのファイルを使用したい構成に戻したところ、再び公開が開始されました。うまくいけば、これは将来的に他のプロジェクトで動作します。

更新2:

Microsoft Connectにバグを投稿し、VS Web開発者チームの開発者から返信を受け取りました。彼は彼らが内部ビルドでこの問題を修正しており、この問題を修正する公開ツールのアップデートをすぐにリリースするだろうと彼は言った。

更新3:

これは最近Visual Studio 2012 Update 2で修正されました


1
それは変です。Publishing folder / ...が表示されていれば、正しく機能しているはずです。パスを確認することをお勧めします。あなたが正しい場所を見ていることを確認してください。
maxisam 2012

14
これは、Visual Studio 2012がインストールされたWindows 8で発生しました。たった今、新しいパブリッシングプロファイルを作成しました。おそらくVS 2012のバグ。:/
T.Ho

3
私も同じ問題を抱えていました。パブリッシングプロファイルを削除して再作成することが私にとってはうまくいきました。
Tommy Jakobsen、2012

3
プロファイルを削除して再作成することが私にとってはうまくいきました。
マイケルウェルズ

3
これはVisual Studio Update 2でもUpdate 3でも修正されていません。「受け入れられた回答」の後の最も一般的な回答を確認してください(解決策ではありません)。プロファイルを編集し、[設定]タブでリストから正しい構成を選択します(リリースが適切な場合は、デバッグを選択して保存し、もう一度編集してリリースを選択します)。保存して公開します。
firepol 2013年

回答:


78

これは、vs2012のRCで作成されたソリューション/プロジェクトが原因である可能性があります。これは数か月前に私に起こり、ソリューションのビルド構成がプロジェクトの構成と一致することを確認することで問題を修正しました...

最近、VS2012RCで作成された同じソリューションをVS2012 Express for Webで開くときに、同じ問題が発生しました。私は元のポスターが示唆したことを正確に行い、それが私の問題を修正しました。

ここに私を答えに導くスレッドがあります:

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

上記の会話から私を助けた適切な応答は次のとおりです。

マイクロソフトによって2012年6月13日午後12:00に投稿されました

これは、ソリューション構成とプロジェクト構成の処理方法のバグでした。それらが同じであると誤って想定したため(たとえば、Solution's Release | x86でも各プロジェクトがRelease | x86に設定される)、ファイルをパブリッシュするために誤ったビルドプロパティを使用する原因となりました。

回避策は、ソリューション構成とビルド構成を一致させることです。この問題は、Visual Studio 2012の次のリリースで修正される予定です。

おかげで-ジミールイスSDET、ビジュアルWeb開発者チーム


8
この問題は、新しいVisual Studio 2012プロジェクトで発生します。過去にはFTP経由で公開していましたが、今は公開しようとすると、上記とまったく同じように動作します。出力はobj dirに作成されますが、実際にサーバーにコピーされることはありません。ただし、設定変更のトリックで修正できます。
Chris Moschini、2012年

12
おい!SP2ではまだ壊れています!

6
私は同じ問題を抱えていて、パブリッシュ設定のデフォルトが「すべてのCPU」になっていることに気づきましたが、私のソリューションは「x86」に設定されています。パブリッシュの設定をx86に変更すると、問題が修正されました。
サム

上記の解決策はどれも私にとってはうまくいきません。プロファイルの削除と再作成、構成の変更と元に戻す、VSの再起動、すべての再構築など。アプリに新しいビューを作成しました。それはそこにあります。私はそれを見ることができます。ローカルで実行すると表示されます。私が公開したとき、それはありません。私は更新4.持っている
ロバート・

私にとって効果的なのは、プロジェクトからビューを削除して、もう一度追加することだけです。ここに何か新しいものがあるという概念までIDEを起動するようです。したがって、VSがプロジェクトの追加と削除を追跡する場所はどこでもかまいません。
ロバート

104

同じ問題。回避策は、公開設定をリリースからデバッグに変更することでした。再公開してから、リリースに戻します...


うん!これは良い答えです。私の場合、デフォルトの「リリース」または「デバッグ」プロファイルを使用せず、「DEV」、「STAGE」、および「LIVE」を使用します。たとえば、STAGEの場合、TFS経由でソリューションをダウンロードした同僚のコンピューターで、プロファイルが誤って "Release"に設定されていた(他のすべてのプロファイルと同じ)。だから私はそれを修正して「STAGE」(または他のもののためのDEV / LIVE)を指す必要がありました。パブリッシュは機能しました。ありがとうございました。
firepol 2013年

魅力のように働いた。これは受け入れられた答えでなければなりません。
AycanYaşıt2014年

39

これをもう少し進めます。パブリッシュプロファイルを作成すると、2つのファイルが作成されます。

  • NewProfile.pubxml
  • 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>ノードを取得して.pubxml.userファイルに入れると、PublishProfilesが再び機能し始めます。


5
+1それは私には思えた。2つのファイルを開いて、新しいプロファイルを作成した後にそれらを比較すると、少し簡単になります。また、チームで作業する場合、両方のファイルをソース管理にチェックインする必要があることもわかりました。
Deano

@Deano * .userファイルをチェックインする際の問題は、個々の(ローカル)プロジェクトをカスタマイズする機能がなくなったことです。ユーザーファイルの目的は、個々のチームメンバーが独自のローカル設定を持つことができるようにすることです。
Dave Riedl、2012年

「.pubxml.user」ファイルをソース管理に追加する代わりに他の解決策はありますか?
Ubikuity 2013年

* .userファイルをソース管理にコミットすることはしませんが、ちなみに、継続的インテグレーションサーバーとビルドプロセスがそれらすべてを管理するため、Visual Studio内のパブリッシュプロファイルは使用しません...
Brett Rigby

21

簡単な修正は、公開プロファイルを削除して新しいプロファイルを作成することです。

ソリューションを右クリックして[公開]を選択すると、プロファイルが設定されます。これを削除して新しいものを作成してください。

これで修正されます。

2010年から2012年に切り替えることでこの問題が発生しました


これは私にとってはうまくいきます。ローカルマシンのプロファイルを削除して再作成することでした。これは他の開発マシンには影響しません。
Jean Jimenez 2013

vs2013からvs2012にプロジェクトを切り替える際にこの問題が発生し、これにより問題が完全に修正されました
NikiUsefi

これでうまくいきました。次の手順を使用して(ファイルシステム)パブリッシュプロファイルを再構築しました:stackoverflow.com/a/20616521/381082
DeveloperDan


8

私も同じ問題を抱えていましたが、このスレッドの答えはどれもうまくいきませんでした。私の問題は、動的に(私のアプリによって)生成された静的HTMLファイルを含むディレクトリがあることでした。ディレクトリ全体が公開されていませんでした。

私のために働いた解決策はここにありまし

しばらくして戻ってきて、ドキュメントを作成する必要があると思った1つの問題は、プロジェクトを公開したときに特定のファイルタイプがアップロードされなかったことです。

問題のファイルタイプは.pdfファイルと.rtfでした。

これが発生した理由は、これらのファイル拡張子がVisual Studioによる公開が必要であると認識されなかったためです。幸い、これはVisual Studioで変更できます。

コピーされていないファイルを選択します。では、プロパティことを保証アクションビルドに設定されているコンテンツを

これでうまくいかない場合は、以下を試してください。

下にプロジェクトメニューの選択/パッケージを公開し、Webをし、このドロップダウンに気づきます:

ここに画像の説明を入力してください

これをこのプロジェクトフォルダ内のすべてのファイルに変更してみてください。


これは私の状況でうまくいきました-ファイルのいくつかだけが公開されたとき。
AndrewRalon 2017年

これは、ファイルがプロジェクトに正しく含まれていないためにのみ機能しました。根本的な原因と解決策については、以下の回答を参照してください:stackoverflow.com/a/40721544/3520070
AndrewRalon

どういう意味ですか。
Tomas Kubes 2017

7

これは、.pubxml.userに公開に必要な情報が含まれており、そのファイルがソース管理に含まれていない(含まれていてはならない)ためです。このVSバグを修正するには、.pubxml.userファイルから.pubxmlファイルに情報をコピーします。関連するプロパティは次のとおりです。

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

それらを.pubxmlに入れれば、問題ありません。


7

私はこれらのソリューションをすべて試しましたが、これは毎回機能するものです。

「Publish method:」を「File System」から、たとえば「Web Deploy」に変更し、すぐに「File System」に戻します。


はい、これは私にとっても最終的に機能したものです(上記の他のすべての提案を試しました)。これはvs2010と一緒です
Karen

5

私はいくつかのプロジェクトで同じ問題を抱えています。ヒットしたのはWebプロジェクトだけのようです。プロファイルを削除して再作成すると、問題は一度だけ解決されます。さらに、生成されたpublishxmlを比較しても違いはないため、プロファイルとはまったく関係がないようです。

ビルドの問題を前後に変更するためにOPによって言及された回避策は、現時点で信頼できる唯一の解決策のようです。


同じ回避策が私にとっても唯一の修正でした。明確にするために、ステップ:ビルド>公開。左側の[設定]タブを選択します。ビルド構成を他のものに変更します。パブリッシュプロファイルの名前の横にアスタリスク(*)が表示されます。これは、バグが阻止されたことを示しています。ビルド構成を必要なものに戻します。通常どおり公開を続行します。修繕。
Chris Moschini、2012年

4

私はVS 2010で同じ問題に遭遇しました。発行の出力、イベントログをオンにし、ビジュアルスタジオのログをオンにして確認した後、最近v1に更新されたと思われるWebパブリッシュを(追加/削除によって)削除することにしました。 0.30810.0。これで問題は解決しました。


2
私たちにはこの問題があり、My Projectの下のPublishProfilesフォルダーにあるpubxml.userファイルに関連しているようです- このファイルは私に固有の設定のみであるとドキュメントが書いてもしたがって、ソース管理には配置されません)。大丈夫発行できました。私の同僚は、ソースコードの新しいコピーを取得して公開できませんでした-彼のpubxml.userファイルが生成されたとき、ファイルはリストされていませんでした。更新されたWebパブリッシュをアンインストールしましたが、すべて順調です。
Nick


4

以下は私のために働きました:

リリース>デバッグ>リリース(またはその逆)から変更して、発行するだけです。

不要なものを削除、編集、公開する必要はありません。


4

私の問題は、myproject.csprojファイルの誤った構成にありました。「_address-step1-stored.cshtml」ファイルは発行時にコピーされませんでした。「なし」が「コンテンツ」に変更されましたが、問題ありません。 ここに画像の説明を入力してください


それはそれでした!プロジェクトには、ソース管理にチェックインされた多くのファイルが含まれていNoneましたが、.csprojファイルとしてマークされているか、プロジェクトから完全に欠落しています(「使用済み」ではありません)。これは、ローカルでの実行が常に機能する理由を完全に説明していますが、発行は機能しませんでした。:D
AndrewRalon 2017年

3

ディスク発行ターゲットを持つVS 2012 Proと同じ問題。プロジェクトは以前は正しく発行されていましたが、ファイルを宛先フォルダーにコピーできなかったため、この問題の発生を開始しました。

解決策は、発行プロファイルを編集し、モードをリリース(任意のCPU)からデバッグに変更してから、リリース(任意のCPU)に戻すことでした。これを実行すると、PublishProfiles \ projname.pubxml.userファイルが(上記のように)書き換えられます。プロパティグループノードの下にLastUsedBuild、LastUsedPlatformおよびTimeStampOfAssociatedLegacyPublishXmlFile要素が追加されたようです。公開が完了すると、個別のファイルと公開時間を含む別のItemGroupが追加されます。


1

このアクションは私にとって成功しました:

"Properties> PublishProfiles> xxxx.pubxml"で発行プロファイルを強制終了し、再度設定し直してください。


1

それだけの価値があるため、私は最終的にWeb Deployとの戦いをあきらめて、望みどおりに(Deployableファイルをコピーするだけで)実行できるようにしました。そのため、PowerShellでスクリプトを作成し、結果に本当に満足しています。それの多くの MSBuildの/ Webはこれらのメソッドは、まだ私は必要としなかった事をやっていたと思われるので、公開して、私が試した何よりも速く。

ここに要点があります(文字通り):

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)で呼び出していますが、ビルド後のイベントにも簡単にフックできます。


1

ターゲットの場所をobj / [release | stage | ..]からソリューションフォルダーの外の新しいパスに完全に変更することで、この問題を回避できることがわかりました(例:c:\ deployment)。VS 2012は混乱しており、公開プロセス中にどこかで諦めているようです。

マット


1

最近、VS 2013で、Umbraco CMSをインポートしたMVCプロジェクトで同じ問題が発生しました。公開できませんでした。上記の答えは役に立ちましたが、VSで実際に何をすべきかを理解するにはしばらく時間がかかりました。それを見つけるには、MSブログなどの調査が必要でした。私はそれを簡単に言ってみます:

  • VSツールバーで、リリースやCPUなどの特定の構成を選択します。プロジェクトを実行します。
  • その後、問題のソリューションのソリューションエクスプローラーで右クリックし、[発行]を選択します。新しい公開プロファイルを作成するか、特定のプロファイルを使用しますが、前回プロジェクトを実行する前と同じ設定(リリースや任意のCPUなど)が選択されていることを必ず確認してください。
  • さらに、私の場合、VSを再起動してすべての公開プロファイルを削除しましたが、最後に失敗した公開試行の設定がスタックしたため、OBJフォルダーを削除する必要ありました

0

ソリューションに他の参照プロジェクトがいくつかあるWebアプリケーションがあります。私は過去に何度も単一の発行構成で正常に展開しました。過去に見逃していたプロジェクトのプロジェクト構成をデバッグからリリースに変更しました。次にデプロイしようとしたときに、パブリッシュが静かに失敗するというこれらの症状が出ました-何もせず、成功したと言います:

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、くだらないラップトップ。


0

Visual Studio 2012では、リリースを切り替えると問題が発生します。

objフォルダーを削除するための事前構築イベントを追加しましたdel /s /f /q $(ProjectDir)\obj。公開の問題が修正されました。クリーニングは時々機能しますが、常にではありません。


0

ようやく自分で答えを見つけました。上記の解決策のすべてが私にはうまくいきません。

私がやったことは、プロジェクトをドライブに移動して、プロジェクトフォルダーを短いものに変更し、それを公開することです。

私の側で失敗した理由は、プロジェクト名/階層が非常に長いためです。

C:\ Users \ user \ Desktop \ Compliance Management System \ ComplianceIssueManagementSystem \ ComplianceIssueManagementSystem

rarファイルを抽出したときに、名前/パスが長すぎると表示されることがあるので、これを考えました。ビジュアルスタジオ2012発行と同じだと思いました。そしてそうです!

皆さんのお役に立てば幸いです。


0

現在のプロジェクトをチェックして、同じクラス名と異なるページ名でバックコピーを作成したかどうかを確認します(クラス名はコピーされたファイルを継承します)。結局それはコンパイラを混乱させるでしょう!!!

CodeFile = "Consolidated.aspx.vb" Inherits = "Consolidated


0

上記の解決策のどれも私にとってうまくいきませんでした。

しかし、メインソリューションの5つのASP.NET MVCプロジェクトのうち、4つが配置パッケージを適切な場所に配置し、1つが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" />

この変更を行った後、5つのプロジェクトすべてが適切な場所に配置パッケージを配置しました。

(長い行については申し訳ありませんが、それらを凝縮するためのより良い方法を見つけることができませんでした。)


1つまたは2つのファイルが見落とされてサーバーに公開されないように見える状況が発生していますが、.vbprojファイルには、提案されている両方の<Import>要素が既に含まれています
bkwdesign

0

Visual Studioで生成されたサービスリファレンスでこれに遭遇しましたファイルが全体のパス長の点で長くなりすぎて、。

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に置き換える必要があります。


0

私も同じ問題を抱えています。上記の解決策のどれも私にとってうまくいきませんでした。

それで、公開中にコピーに失敗したファイルを除外しました。


0

何度かウェブサイトを公開しました。しかし、ある日aspxファイルを変更してWebサイトを公開しようとすると、公開フォルダーが空になりました。

私の回避策では、解決策を見つけました。

  1. 公開ウィザードは、公開中のエラーを反映しますが、ファイルを宛先フォルダーにコピーしません。

  2. エラーを生成するファイルを見つけるには、Webサイトフォルダーの内容を新しいフォルダーにコピーし、そのWebサイトでVisual Studioを起動します。

  3. これで公開しようとすると、エラーを含むファイル名が表示されます。

  4. 元のWebサイトフォルダーのエラーを修正して公開してみてください。以前と同じように機能します。


0

次の手順に従って解決してください。

Build > Publish > Profile > New

新しいプロファイルを作成し、既存のプロファイルと同じ設定で構成します。

これでプロジェクトが正しく公開されます。これは多くの場合、新しいバージョンのVisual Studioで作成された別のマシンからのソース管理の発行プロファイルの結果として発生します。


0

修正済み -提供されているさまざまなソリューションが機能しませんでした。VS Community 2017、Windows Server 2012 R2で私にとってうまくいったのは、ユーザーのTEMPおよびTMP環境変数を変更してから、システム再起動して再度展開することでした(VSの再起動では不十分でした)。これらの一時変数は、VSが一時公開を行う場所です。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

一時変数を変更した後にVisual Studioを再起動しても問題はなく、システムを再起動する必要がありました。


-1

最初:

  • リリース構成を組み込みます。
  • [プロジェクトのプロパティ]->ページで、[パッケージ/パブリッシュWeb]の[すべてのファイルとフォルダー]を選択します。
  • ソリューションを再構築します(クリーンソリューションの後)。
  • 今公開します。

公開中に、選択した内容を再確認してください。
これでうまくいくはずです。それは私のためにした!:)


-2

最も簡単なのは、

   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!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.