質問

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

ターゲットディレクトリ上に、空にいるにもかかわらず、特定のフォルダーを作成することを強制する方法はありますか?ありがとう!

役に立ちましたか?

解決

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

お役に立てれば。

他のヒント

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

私は使用しています Visual Studio 2012 そして、この迷惑な状況を克服するための素敵な/エレガントな方法を見つけました。私もそれが機能すると思います VS 2010 また、空のフォルダー内にダミー空のファイルを追加するよりも優れています。

で公開プロファイルを作成するとき VS 2012 それはaを生成します MyPublishProfile.pubxml のファイル Properties\PublishProfiles フォルダー(My Project\PublishProfiles VBの場合)。これらは MSBuild ファイルと1つは編集して、パブリッシュプロセスをカスタマイズできます。この場合、パブリッシュが実際にこのように発生する前に、ターゲットをパブリッシュプロセスに挿入できます。

<?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 展開パッケージのコンテンツが作成された後に呼び出されるターゲットの名前を保持します。これは、パッケージに追加のファイルまたはフォルダーを追加するのに最適な時期です。


ミックスミックスコードとテキスト:

Web 2012で公開タスクを展開する前にのみPowerShellスクリプトを実行する方法は?

Webデプロイ:展開パッケージのカスタマイズ

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

残念な。それはVisual Studio 2008で機能していたからです。

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

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

Visual Studioが生成するPUBXMLファイルを公開した編集、Leniel Macaferiが述べたように、これを追加してください。

<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ファイルを追加します。空のままにすることができます。その後、Precompiledバージョンでフォルダーを作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top