40

アップロードされたファイルを保持するディレクトリなど、ディレクトリが空の場合でも、ディレクトリツリーを保持するWebプロジェクトを公開する必要があることがよくあります。VS2010のpublishコマンドを使用してアプリを公開すると、リモートファイルシステムのWebサーバーに空のディレクトリが作成されません。

VSに、ターゲットディレクトリに空ではあるが特定のフォルダを作成させる方法はありますか?ありがとう!

4

5 に答える 5

41

いいえ、これは不可能です。同じ問題が発生したのではないかと思います。プリコンパイルツールでこれらの空のフォルダを生成する場合は、空の各ディレクトリにplaceholder.txtファイルを作成する必要があります。ビルド後のイベントでフォルダーを作成するコマンドラインアプリを作成できない場合(ただし、WebサイトプロジェクトではなくWebアプリケーションプロジェクトを使用している場合のみ)。

お役に立てれば。

于 2010-11-24T09:44:33.303 に答える
8

私はこの質問が言及していることを知っていますVisual Studio 2010が、私は同じ問題を探してここに来ました...

私はVisual Studio 2012この厄介な状況を克服するための素晴らしい/エレガントな方法を使用して見つけました。VS 2010空のフォルダ内にダミーの空のファイルを追加するよりもうまくいくと思います。

それを使用して公開プロファイルを作成すると、フォルダー内にファイルVS 2012が生成されます(VBの場合)。これらはファイルであり、それらを編集して公開プロセスをカスタマイズできます。この場合、公開が実際に次のように行われる前に、ターゲットを公開プロセスに挿入できます。MyPublishProfile.pubxmlProperties\PublishProfilesMy Project\PublishProfilesMSBuild

<?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は、デプロイメントパッケージのコンテンツが準備された後に呼び出されるターゲットの名前を保持します。これは、パッケージにファイルやフォルダーを追加するのに最適なタイミングです。


コードとテキストの混合:

VS 2012でWeb展開公開タスクの前にのみPowerShellスクリプトを実行するにはどうすればよいですか?

Web配置:配置パッケージのカスタマイズ

于 2013-04-30T17:09:08.680 に答える
3

これについてマイクロソフトにバグレポートがあり、彼らはそれを修正しないと言った。 http://connect.microsoft.com/VisualStudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-folders

残念な。以前はVisualStudio2008で機能していたためです。

ダミーファイルを実際にデプロイする必要はないことに注意してください。ビルド環境でプロジェクトの一部として存在する必要があるだけです。

于 2012-02-21T17:42:33.420 に答える
2

これは私のために働いた:

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>
于 2015-07-26T22:28:19.550 に答える
1

空のフォルダ内にDefault.aspxファイルを追加します。空のままにしておくと、プリコンパイル済みバージョンのフォルダが作成されます。

于 2013-09-30T20:22:27.763 に答える