適切な言語/ツールを選択してビルドします。 msbuildはあなたがこの種のものを書くツール(そして言語の種類)です。ビルドスクリプトと呼ばれています。彼らはバットスクリプトではありません。 .batスクリプトは使用しないでください。それは20年前のことでした。
以下は、基本的なmsbuildスクリプトファイルです。それは
- の.sln
- は、zipファイルにファイルを圧縮フォルダ
- にcsprojの(通常はGUIのcsproj)のうちの一つのファイルをコピーするビルドします
あなたはでしょうあなたがいることを実行した後
は、あなたがからMSBuild.exe
でファイルを実行します「MyBuildScript.proj」(またはMyBuildScript.msbuild)と呼ばれるファイルでこれを置きますビルド・ロジックを記述する方法である
"%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" /target:AllTargetsWrapped "MyBuildScript.proj" /p:Configuration=Debug;FavoriteFood=Popeyes /l:FileLogger,Microsoft.Build.Engine;logfile=MyBuildScript.proj.Release.log
(MyBuildScript.proj)
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapped">
<PropertyGroup>
<!-- Get this project from http://msbuildextensionpack.codeplex.com/releases/view/105659 -->
<MSBuildExtensionPackFoundPath Condition="Exists('$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks')">$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</MSBuildExtensionPackFoundPath>
<MSBuildExtensionPackFoundPath Condition="Exists('$(MSBuildExtensionsPath32)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks')">$(MSBuildExtensionsPath32)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</MSBuildExtensionPackFoundPath>
<MSBuildExtensionPackFoundPath Condition="Exists('$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks')">$(MSBuildExtensionsPath)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</MSBuildExtensionPackFoundPath>
<MSBuildExtensionPackFoundPath Condition="$(MSBuildExtensionPackFoundPath)==''">CouldNotFindBaseDirectoryCheckForInstalledProduct\MSBuild.ExtensionPack.tasks</MSBuildExtensionPackFoundPath>
</PropertyGroup>
<Import Project="$(MSBuildExtensionPackFoundPath)"/>
<PropertyGroup>
<!-- Always declare some kind of "base directory" and then work off of that in the majority of cases -->
<WorkingCheckout>.</WorkingCheckout>
<WorkingDir>.</WorkingDir>
<ArtifactDestinationFolder>$(WorkingCheckout)\ZZZArtifacts</ArtifactDestinationFolder>
<ZipArtifactDestinationFolder>$(WorkingDir)\ZZZZipArtifacts</ZipArtifactDestinationFolder>
</PropertyGroup>
<Target Name="AllTargetsWrapped">
<CallTarget Targets="CleanArtifactFolder" />
<CallTarget Targets="BuildItUp" />
<CallTarget Targets="CopyFilesToArtifactFolder" />
<CallTarget Targets="ZipItUp" />
</Target>
<Target Name="BuildItUp" >
<MSBuild Projects="$(WorkingCheckout)\Solution1.sln" Targets="Build" Properties="Configuration=$(Configuration)">
<Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
</MSBuild>
<Message Text="BuildItUp completed" />
</Target>
<Target Name="CleanArtifactFolder">
<RemoveDir Directories="$(ArtifactDestinationFolder)" Condition="Exists($(ArtifactDestinationFolder))"/>
<MakeDir Directories="$(ArtifactDestinationFolder)" Condition="!Exists($(ArtifactDestinationFolder))"/>
<RemoveDir Directories="$(ZipArtifactDestinationFolder)" Condition="Exists($(ZipArtifactDestinationFolder))"/>
<MakeDir Directories="$(ZipArtifactDestinationFolder)" Condition="!Exists($(ZipArtifactDestinationFolder))"/>
<Message Text="Cleaning done" />
</Target>
<Target Name="CopyFilesToArtifactFolder">
<ItemGroup>
<MyExcludeFiles Include="$(WorkingDir)\**\*.doesnotexist" />
</ItemGroup>
<ItemGroup>
<MyIncludeFiles Include="$(WorkingDir)\CsProjectOne\bin\$(Configuration)\**\*.*" Exclude="@(MyExcludeFiles)"/>
</ItemGroup>
<Copy
SourceFiles="@(MyIncludeFiles)"
DestinationFiles="@(MyIncludeFiles->'$(ArtifactDestinationFolder)\%(Filename)%(Extension)')"
/> <!-- %(RecursiveDir) -->
</Target>
<Target Name="ZipItUp">
<ItemGroup>
<NonConfigFilesExcludeFiles Include="$(ArtifactDestinationFolder)\**\*.doesnotexist" />
</ItemGroup>
<ItemGroup>
<NonConfigFilesIncludeFiles Include="$(ArtifactDestinationFolder)\**\*" Exclude="@(NonConfigFilesExcludeFiles)"/>
</ItemGroup>
<!-- Create a zip file based on the FilesToZip collection -->
<MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="@(NonConfigFilesIncludeFiles)" RemoveRoot="$(ArtifactDestinationFolder)" ZipFileName="$(ZipArtifactDestinationFolder)\MyOutputFile.zip"/>
<!-- -->
</Target>
</Project>
。そこには他のビルドツールがありますが、これはデフォルトのdotNetのツールです。
.batファイルを維持管理するのは難しいとは言わないでください。
ジョブに適切なツールを使用してください。
PS「msbuildextensionpack」は、msbuildの拡張の例です。 msbuildには多くの便利な拡張機能があります。時間の99%、誰かがあなたがする必要があることをするのに役立つmsbuild拡張を書いています。
ftpクライアントの宛先にファイルを送信する必要がありますか?誰かがすでに仕事を書いています。
一部の.xmlファイルを操作する必要がありますか?誰かがすでに仕事を書いています。
(この例のように)ファイルを圧縮する必要があります。誰かがすでに仕事を書いています。
何か主流...何かが既に仕事を書いています。