2012-03-25 13 views
3

MSBuildを使用してWebプロジェクトを構築し、デプロイ可能なファイル(つまり.cs、.csproj、.Debugなし)でプロジェクトを出力する正しい方法を見つけようとしています。 .configなど)、ローカルフォルダーに公開してFTP、RoboCopyなどの方法でセカンダリの場所に公開することができます。MSBuildプロジェクトをコンフィグレーション済みのローカルフォルダにデプロイ

公開された出力には、指定された構成および変換設定ファイル(Web.Debug.configなど)で事前変換されたWeb.configファイルが含まれている必要があります。が出力に含まれています。私は、IISやデータベースの配備などには派手なパブリッシングは必要ありません。私はそれをテストできるクリーンなファイルシステムの出力をしたいだけです。これは、自動ビルドプロセスの一部として実行したいので、ビジュアルツールを使用して行うことはできません。

Webデプロイメントパッケージを生成することはできますが、引用符付きのコマンドラインオプションを処理できないように見えるため(何らかのバグのようです)、ディレクトリ構造にスペースが含まれているため、 MSBuildはネイティブな容量の設定ファイル(TransformXml)を変換するように見えるので、MSBuildを使用してタスク全体を達成することを望んでいました。これは、私が使用している適切な展開機能の唯一の実際のビットです。

答えて

1

最終的にわかった。次のビルドスクリプトはこのトリックを行います:

<?xml version="1.0"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> 
    <PropertyGroup> 
     <OutputDir>obj\website-output</OutputDir> 
    </PropertyGroup> 
    <Target Name="PrepareDeploy"> 
     <ItemGroup> 
      <DeployableFiles Include="App_Code/**/*.*;App_Data/**/*.*;Areas/**/Views/**/*.*;bin/**/*.*;Views/**/*.*;*.aspx;*.asax;*.html;*.htm;sitemap.xml;*.ico;*.png" Exclude="App_Data/**/*.log" /> 
     </ItemGroup> 
     <RemoveDir ContinueOnError="true" Directories="$(OutputDir)" /> 
     <MSBuild Projects="Website.csproj" /> 
     <MakeDir ContinueOnError="true" Directories="$(OutputDir)" /> 
     <Copy SourceFiles="@(DeployableFiles)" DestinationFiles="@(DeployableFiles->'$(OutputDir)\%(RelativeDir)%(Filename)%(Extension)')" /> 
     <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="$(OutputDir)\web.config" /> 
    </Target> 
</Project> 
関連する問題