4

他のいくつかのプロジェクトを含む ASP.NET Web サイト ソリューションを実行しています。MSBuild プロジェクトでこれが可能であることは知っていましたが、それが最善の方法ですか? それらは簡単に作成できますか? nAnt、CruiseControl.NET、またはその他のソリューションはどれが優れていますか?

( Web Deployment Projectsを使用して) サイトをビルドするとき、ビルドの一部を自動化して、プロジェクトから特定のフォルダーを Release フォルダーにコピーしないようにすることはできますか? たとえば、ローカル検索インデックス、画像、およびフォルダーのその他のコンテンツ部分を含むフォルダーがありますが、プロジェクトを展開するときにそれらを必要とせず、アップロードすることもありません。

また、ビルド番号とバージョン番号を自動的にインクリメントするこのタイプのソリューションも検討しています。

4

7 に答える 7

8

.wdproj ファイルでこの種のタスクをスクリプト化する Web 配置プロジェクトの例を次に示します。

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

これにより、フォルダを削除できます。

(フォルダーをまったくコピーしたくない場合は、ソリューションファイルを指定する場所になると思いますが、それを使用する必要はありませんでした。)

于 2008-10-01T14:07:15.423 に答える
4

MaseBase では、Web 配置プロジェクトを使用して Web サイトを構築およびパッケージ化できます。Web アプリケーションの側面を持つプロジェクトでは、常にそうしています。WDP を Web サイトに割り当てた後、.wdprojファイルをプレーンテキストの XML ファイルとして開くことができます。最後に、ビルド プロセス中に発生する一連のイベントを表す MSBuild ターゲットのコメント付きセクションがあります。

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

必要なターゲット ("AfterBuild" など) のコメントを外し、そこに必要なタスクを挿入して、繰り返されるビルド後のアクティビティを実行できます。

于 2008-08-28T17:26:24.737 に答える
2

個々のファイルに Build Action/Copy to Output Directory プロパティを設定して (ファイルを選択し、F4 を押してプロパティ ウィンドウを開きます)、ビルド中にファイルに何が起こるかを制御できますが、フォルダーにはできません。手動で行いたくない場合は、おそらく (事前) ビルド タスクで自動化できます。

または、これらのフォルダーをプロジェクトから除外することもできます (右クリックして「プロジェクトから除外」)。それらは引き続き存在しますが (ソリューション エクスプローラーで "すべてのファイルを表示")、プロジェクトのビルド時には含まれません。

于 2008-08-19T06:51:24.757 に答える
1

プロジェクトアイテムを「出力ディレクトリにコピー」に設定するための@Fredrikのヒントに加えて、[ビルド]タブのプロジェクトのプロパティでビルド後のアクションを指定し、copy.exeやmove.exeなどのCMDコマンドを含めることもできます。

于 2008-08-19T08:24:28.890 に答える
1

CruiseControl.NET は別の問題 (継続的インテグレーション) を解決します...しかし、特にあなたが求めているものについては、NAnt で大きな成功を収めました。学習曲線はありますが、一度習熟すると、それなしでどうやってやっていたのか不思議に思うでしょう.

于 2008-08-19T05:59:49.540 に答える
1

FinalBuilder を使用して、一連のビルド後/ビルド前タスクを自動化します。Web インターフェースもあるので、Web サイトにログインしてボタンをクリックするだけで、ビルド (または Web サイトのプッシュ) を開始できます。

http://www.finalbuilder.com/

于 2008-08-19T19:42:46.477 に答える
1

Web 配置プロジェクトの MSBuild ファイルを編集して、必要な処理を行うことはできませんか?

于 2008-08-19T19:48:13.283 に答える