アップロードされたファイルを保持するディレクトリなど、ディレクトリが空の場合でも、ディレクトリツリーを保持するWebプロジェクトを公開する必要があることがよくあります。 VS2010publishコマンドを使用してアプリを公開すると、リモートファイルシステムのWebサーバーに空のディレクトリが作成されません。
VSに、空ではあるが、ターゲットディレクトリに特定のフォルダを作成させる方法はありますか?ありがとう!
いいえ、これは不可能です。同じ問題が発生したのではないかと思います。プリコンパイルツールでこれらの空のフォルダを生成する場合は、空の各ディレクトリにplaceholder.txtファイルを作成する必要があります。ビルド後のイベントでフォルダーを作成するコマンドラインアプリを作成できない場合(ただし、WebサイトプロジェクトではなくWebアプリケーションプロジェクトを使用している場合のみ)。
お役に立てれば。
この質問がVisual Studio 2010
に言及していることは知っていますが、同じ問題を探してここに来ました...
私はVisual Studio 2012
を使用していて、この厄介な状況を克服するための素晴らしい/エレガントな方法を見つけました。 VS 2010
でも機能し、空のフォルダー内にダミーの空のファイルを追加するよりも優れていると思います。
VS 2012
を使用して公開プロファイルを作成すると、MyPublishProfile.pubxml
フォルダー(VBの場合はProperties\PublishProfiles
)にMy Project\PublishProfiles
ファイルが生成されます。これらはMSBuild
ファイルであり、それらを編集して公開プロセスをカスタマイズできます。この場合、公開が実際に次のように行われる前に、ターゲットを公開プロセスに挿入できます。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>CreateEmptyFolders
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEmptyFolders">
<Message Text="Adding empty folder to hold Files" />
<MakeDir Directories="$(_MSDeployDirPath_FullPath)\Files\MyEmptyFolder"/>
</Target>
</Project>
プロパティAfterAddIisSettingAndFileContentsToSourceManifest
は、デプロイメントパッケージのコンテンツが準備された後に呼び出されるターゲットの名前を保持します。これは、パッケージにファイルやフォルダーを追加するのに最適な時期です。
コードとテキストの混合:
これについてマイクロソフトにバグレポートがあり、彼らはそれを修正しないと言った。 http://connect.Microsoft.com/VisualStudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-folders
残念な。以前はVisualStudio2008で機能していたためです。
ダミーファイルを実際にデプロイする必要はないことに注意してください。ビルド環境でプロジェクトの一部として存在する必要があるだけです。
これは私のために働いた:
Leniel Macaferiが述べたように、VisualStudioが生成する公開pubxmlファイルを編集してから、これを追加します。VisualStudioはすでに次のようなプロパティを生成しています。
<publishUrl>f:\publish_web</publishUrl>
の中に
<PropertyGroup>
セクションなので、次のように使用しました。セクションに追加:
<PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
そしてまた追加しました:
<Target Name="CustomBeforePublish">
<Message Text="CustomBeforePublish task:"/>
<MakeDir Directories="$(publishUrl)\MyFolder\MyFolder2"/>
</Target>
空のフォルダ内にDefault.aspxファイルを追加します。空のままにしておくと、プリコンパイル済みバージョンのフォルダが作成されます。