アップロードされたファイルを保持するディレクトリなど、ディレクトリが空の場合でも、ディレクトリツリーを保持するWebプロジェクトを公開する必要があることがよくあります。VS2010のpublishコマンドを使用してアプリを公開すると、リモートファイルシステムのWebサーバーに空のディレクトリが作成されません。
VSに、ターゲットディレクトリに空ではあるが特定のフォルダを作成させる方法はありますか?ありがとう!
アップロードされたファイルを保持するディレクトリなど、ディレクトリが空の場合でも、ディレクトリツリーを保持するWebプロジェクトを公開する必要があることがよくあります。VS2010のpublishコマンドを使用してアプリを公開すると、リモートファイルシステムのWebサーバーに空のディレクトリが作成されません。
VSに、ターゲットディレクトリに空ではあるが特定のフォルダを作成させる方法はありますか?ありがとう!
いいえ、これは不可能です。同じ問題が発生したのではないかと思います。プリコンパイルツールでこれらの空のフォルダを生成する場合は、空の各ディレクトリにplaceholder.txtファイルを作成する必要があります。ビルド後のイベントでフォルダーを作成するコマンドラインアプリを作成できない場合(ただし、WebサイトプロジェクトではなくWebアプリケーションプロジェクトを使用している場合のみ)。
お役に立てれば。
私はこの質問が言及していることを知っていますVisual Studio 2010
が、私は同じ問題を探してここに来ました...
私はVisual Studio 2012
この厄介な状況を克服するための素晴らしい/エレガントな方法を使用して見つけました。VS 2010
空のフォルダ内にダミーの空のファイルを追加するよりもうまくいくと思います。
それを使用して公開プロファイルを作成すると、フォルダー内にファイルVS 2012
が生成されます(VBの場合)。これらはファイルであり、それらを編集して公開プロセスをカスタマイズできます。この場合、公開が実際に次のように行われる前に、ターゲットを公開プロセスに挿入できます。MyPublishProfile.pubxml
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ファイルを追加します。空のままにしておくと、プリコンパイル済みバージョンのフォルダが作成されます。