web-dev-qa-db-ja.com

Visual Studio 2012 Web発行でファイルがコピーされない

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

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

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

パブリッシュが成功したと言っても、パブリッシュのターゲットディレクトリにファイルがありません。

私はこれを複数のプロジェクトで見てきましたが、時にはSolution/Platformの設定がこの問題を引き起こしているように見えますが、正確な原因を特定できていません。

誰かがこれが起こっているのを見たことがありますか、またはこれを正しく機能させる方法についての考えを持っていますか?

更新日

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

PDATE 2:

私はMicrosoft Connectにバグを投稿し、VS Web開発チームの開発者から聞きました。彼は、彼らが彼らの内部ビルドでこの問題を修正したと言いました、そして、この問題を解決するであろう公開ツールへの更新をまもなくリリースするでしょう。

PDATE 3:

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

227
Jeff Papp

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

VS2012 Express for Webを使用してvs2012RCで最初に作成されたのと同じソリューションを開いたときに、私は最近同じ問題を経験しました。私はオリジナルのポスターが示唆していることと全く同じようにし、それが私の問題を解決しました。

これが私を答えに導いたスレッドです。

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

上記の会話からの適切な回答は、次のようなものでした。

マイクロソフトによる投稿2012年6月13日の12:00 PMこんにちはアンドリュー、

これは、ソリューション構成とプロジェクト構成の処理方法におけるバグでした。我々は誤ってそれらが同じであると仮定し(例えば、SolutionのRelease | x86は各プロジェクトをRelease | x86に設定するでしょう)、それは私たちがファイルを公開するために間違ったビルドプロパティを使うことを引き起こしました。

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

ありがとう、 - Jimmy Lewis SDET、ビジュアルWeb開発チーム

78
Dave Riedl

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

104
Roberto Nunes

もう少し詳しく言うと。公開プロファイルを作成すると作成されるファイルが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は再び機能し始めます。

39
Eric Wild

簡単な解決策は、あなたの公開プロフィールを削除して、新しいプロフィールを作成することです。

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

これで修正されます。

私は2010年から2012年に切り替えてからこの問題を抱えていた

21
JGilmartin

同じエラーがあり、設定をrelease to debugから変更して問題を解決しました。

9
Stack User

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

私のために働いた解決策が見つかりました こちら

少し前に戻ってきて文書化すべきだと思った問題の1つは、プロジェクトを公開したときに特定の種類のファイルがアップロードされなかったことです。

問題のファイルの種類は、.pdfファイルと.rtfです。

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

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

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

プロジェクトメニューの下でパッケージ/発行Webを選択して、このドロップダウンを確認します。

enter image description here

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

8
Charles Wesley

私はこれらの解決策をすべて試しましたが、これは毎回うまくいくものです。

"Publish method:"を "File System"から "Web Deploy"などに変更し、すぐに "File System"に戻します。

7
user2896889

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

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

それらをあなたの.pubxmlに入れてください。

7
Chris Hynes

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

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

5
Bob Noordam

以下は私のために働いた:

単にRelease> Debug> Releaseから(またはその逆に)変更してから公開します。

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

4
dav_i

私の問題はmyproject.csprojファイルの間違った設定にありました。 '_address-step1-stored.cshtml'ファイルが公開時にコピーされませんでした。 'None'が 'Content'に変更されました、今は大丈夫です。 enter image description here

4
Yara

私はVS 2010でも同じ問題に出くわしました。発行の出力、イベントログ、ビジュアルスタジオのログなどをチェックしてチェックした後、私は最近v1に更新されたと思うweb発行を削除することにしました。 0.30810.0。これで問題は解決しました。

4
Matt Jordan

ここでも同じ問題がありました。

"Publish method:"を "File System"から "Web Deploy"などに変更し、すぐに "File System"に戻します。

4
KoalaBear

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

解決策は、発行プロファイルを編集し、モードをRelease(Any CPU)からdebugに変更してからRelease(Any CPU)に戻すことでした。これを行うと、PublishProfiles\projname.pubxml.userファイルが書き直されます(上記のとおり)。プロパティグループノードの下にLastUsedBuild、LastUsedPlatform、およびTimeStampOfAssociatedLegacyPublishXmlFile要素が追加されたように見えます。公開が完了すると、個々のファイルと公開時刻を持つ別のItemGroupが追加されます。

3
mellodev

私がUmbraco CMSをインポートしたMVCプロジェクトのVS 2013でも最近同じ問題がありました。公開できませんでした。上記の答えは役に立ちましたが、VSで実際にすべきことを理解するのにしばらく時間がかかりました。それはいくつかの研究を必要としました。調べるためにMSブログで。私はそれを簡単に言うことを試みる:

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

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

マット

1
Wilkoteq

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

[プロパティ]> [PublishProfiles]> [xxxx.pubxml]で[公開プロファイル]を終了して、もう一度設定し直します。

1
MichAdel

その価値があるので、私は結局私が望んだことを実行するためにWeb Deployと戦うことをあきらめた(デプロイ可能なファイルをコピーするなど何もしない)ので、私はそれをPowerShellでスクリプト化してその結果に本当に満足している。 MSBuild/Web Publishを使って試したものよりもはるかに高速です。おそらくこれらのメソッドがまだ必要ないことをしているからです。

要点は次のとおりです( 文字通り )。

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
Todd Menier

私は、ソリューション内の他のいくつかの参照プロジェクトを含むWebアプリケーションを持っています。私は過去に何度も単一のPublish設定で正常にデプロイしました。過去に見逃していたプロジェクトのプロジェクト構成をデバッグからリリースに変更しました。次にデプロイしようとしたときに、Publishが静かに失敗するという症状が出ました。何もしないで成功したと言います。

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
Chris Moschini

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

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

0
Dileep

私はこれを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
saille

解決するためにこれらのステップに従って下さい:

Build > Publish > Profile > New

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

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

0
Adam

私は同じ問題に遭遇しました。上記の解決策のどれも私のために働きませんでした。

そのため、公開中にコピーに失敗したファイルは除外しました。

0
Rahul Nikate

私は何度もウェブサイトを公開しました。しかしある日私があるaspxファイルを修正してからウェブサイトを公開しようとしたとき、それは空の公開されたフォルダをもたらしました。

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

  1. 発行ウィザードは発行中のエラーを反映しますが、ファイルをコピー先フォルダにコピーすることはありません。

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

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

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

0
Ramanathan RM

上記の解決策のどれも私のために働きませんでした。

しかし、私たちのメインソリューションに含まれる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つのプロジェクトすべてがそれぞれのデプロイメントパッケージを正しい場所に配置しました。

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

0
Ryan Lundy

私はついに自分で答えを見つけました。上記の解決策すべてが私のために働かない。

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

それが私の側で失敗した理由は、私が非常に長いプロジェクト名/階層を持っていたということです。

C:¥Users¥user¥Desktop¥コンプライアンス管理システム¥ComplianceIssueManagementSystem¥ComplianceIssueManagementSystem

時々私はRARファイルを抽出したときにそれは名前/パスが長すぎることを言うので私はこれを考えていました。私はそれがビジュアルスタジオ2012年発行と同じになると思いました。そしてそれはします!

それが皆さんに役立つことを願っています。

0
Joebet

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

objフォルダを削除するためのビルド前のイベントdel /s /f /q $(ProjectDir)\objを追加しました。これにより、公開の問題が修正されました。清掃は時々はたらきますが、いつもではありません。

0
Candide