2018年9月29日土曜日

MSBuild の各要素・アイテム・プロパティーの俯瞰と逆引き大辞典

Target は ターゲット
 
Message とか Execタスク
 
AfterTargets="Build" にしておくと、ビルド後に実行してくれます。

<Target Name="BuildEncoder" 
        AfterTargets="Build">
  <Message Importance="Normal" 
           Text="Encoder: %(Encoder.Identity) → $(OutputPath)%(Encoder.OutputTo)" />
  <Exec Command="Encoder.exe %(Encoder.Identity) $(OutputPath)%(Encoder.OutputTo)" />
</Target>

%(Encoder.Identity) の Encoder は ItemGroup の中に定義した Encoder という名の Item
%(Encoder.Identity) の Identity は 既知のアイテム メタデータ
%(Encoder.OutputTo) の OutputTo は自分で定義したメタデータ
 
$(OutputPath) の OutputPath は プロパティー
↑ 環境変数を参照することがあります。
↑ $(…) の … は プロパティ関数 の場合があります: $(VER.Replace('.','_'))

      <ItemGroup>
        <Encoder Include="File.txt">
          <OutputTo>File.bin</OutputTo>
        </Encoder>
      </ItemGroup>




Encoder は Item に変換
方法: ビルドするファイルを選択する

OutputTo はメタデータ


アイテムリスト

@(ABC)
@(ABC, ';')
@(ABC, ', ')
方法: 項目リストをコンマ区切りで表示する


アイテムの種類を変換

@(ItemForMyTool->'&quot;%(FullPath)&quot;', ' ')
メタデータを使用してアイテムの種類を変換する



アイテム用の関数

@(theItem->IndexOf('r'))
項目用の関数



jQuery をつかうと Web ページからのリンク抽出と、変換が楽にできますね…
(この prettier.io は一行 JavaScript をキレイにフォーマットしてくれます!)
 
  • $.map($("main").find("a"), function(a) {
      return $("<a>")
        .attr("target", "_blank")
        .attr("href", a.href)
        .append(
          $("<code>")
            .addClass("word")
            .text(a.innerText)
        )
        .prop("outerHTML");
    }).join("\n");
  • $.map($("table#user-content-tasksTable").find("a"), function(a) {
      return $("<a>")
        .attr("target", "_blank")
        .attr("href", a.href)
        .append(
          $("<code>")
            .addClass("word")
            .text(a.innerText)
        )
        .prop("outerHTML");
    }).join("\n");
  • $.map($("div#divTree").find("a"), function(a) {
      return a.innerText.endsWith(" Class")
        ? $("<a>")
            .attr("target", "_blank")
            .attr("href", a.href)
            .append(
              $("<code>")
                .addClass("word")
                .text(a.innerText)
            )
            .prop("outerHTML")
        : null;
    }).join("\n");


お約束のタグクラウドです。

MSBUILD のタスク
Task 基本クラス TaskExtension 基本クラス ToolTaskExtension 基本クラス AL (アセンブリ リンカー) タスク AspNetCompiler タスク AssignCulture タスク AssignProjectConfiguration タスク AssignTargetPath タスク CallTarget タスク CombinePath タスク ConvertToAbsolutePath タスク Copy タスク CreateCSharpManifestResourceName タスク CreateItem タスク CreateProperty タスク CreateVisualBasicManifestResourceName タスク Csc タスク Delete タスク DownloadFile タスク Error タスク Exec タスク FindAppConfigFile タスク FindInList タスク FindUnderPath タスク FormatUrl タスク FormatVersion タスク GenerateApplicationManifest タスク GenerateBootstrapper タスク GenerateDeploymentManifest タスク GenerateResource タスク GenerateTrustInfo タスク GetAssemblyIdentity タスク GetFrameworkPath タスク GetFrameworkSdkPath タスク GetReferenceAssemblyPaths タスク LC タスク MakeDir タスク Message タスク Move タスク MSBuild タスク ReadLinesFromFile タスク RegisterAssembly タスク RemoveDir タスク RemoveDuplicates タスク RequiresFramework35SP1Assembly タスク GenerateResource タスク GenerateResource task ResolveAssemblyReference タスク ResolveComReference タスク ResolveKeySource タスク ResolveManifestFiles タスク ResolveNativeReference タスク ResolveNonMSBuildProjectOutput タスク SGen タスク SignFile タスク Touch タスク UnregisterAssembly タスク Unzip タスク UpdateManifest タスク Vbc タスク Warning タスク WriteCodeFragment タスク WriteLinesToFile タスク XmlPeek タスク XmlPoke タスク XslTransformation タスク ZipDirectory タスク
MSBuildTasks
Add AppPoolController AppPoolCreate AppPoolDelete AssemblyInfo Attrib Divide EmbedNativeResource FileUpdate FtpUpload FxCop GetSolutionProjects ILMerge Mail Multiple MV NDoc NUnit NUnit3 RegexMatch RegexReplace RegistryRead RegistryWrite Script ServiceController ServiceQuery Sleep SqlExecute Subtract SvnCheckout SvnClient SvnCommit SvnExport SvnInfo SvnUpdate SvnVersion TaskSchema TemplateFile Time Unzip Version VssAdd VssCheckin VssCheckout VssClean VssDiff VssGet VssHistory VssLabel VssUndoCheckout WebDirectoryCreate WebDirectoryDelete WebDownload XmlRead XmlUpdate Xslt Zip
MSBuild.Extension.Pack
BaseAppDomainIsolatedTask Class BaseTask Class Utilities Class BizTalkAdaptor Class BizTalkApplication Class BizTalkAssembly Class BizTalkHost Class BizTalkHostInstance Class BizTalkReceiveHandler Class BizTalkSendHandler Class FxCop Class NUnit Class NUnit3 Class StyleCop Class Email Class Ftp Class MSMQ Class Cab Class DNZip Class Zip Class ActiveDirectory Class ComponentServices Class EnvironmentVariable Class EventLog Class EventSource Class HostsFile Class Network Class PerformanceCounters Class Process Class Registry Class SystemDrive Class WindowsService Class WshShell Class Data Class DataMap Class Organization Class Solution Class Detokenise Class File Class FileVersion Class FindUnder Class Folder Class RoboCopy Class Share Class Assembly Class AssemblyInfo Class AsyncExec Class CommandLine Class ConfigManager Class DateAndTime Class DynamicExecute Class Gac Class GenericTool Class Guid Class ILMerge Class Metadata Class MSBuildHelper Class Parallel Class Path Class Signing Class SmartExec Class TextString Class Thread Class XProduct Class Clone Class SecureFileLogger Class SqlLogger Class XmlFileLogger Class Wmi Class Sound Class Packager Class Maths Class Certificate Class AnalysisServices Class Database Class Server Class AnalysisServices Class Database Class Server Class AnalysisServices Class Database Class Server Class BuildDeploymentManifest Class BuildNumber Class SqlCmd Class SqlExecute Class SqlVersion Class SqlVersionDataClass Class Svn Class DlrTaskFactory Class PowerShellTaskFactory Class TeamBuild Class TeamBuild Class Console Class Dialog Class SourceSafe Class TfsSource Class TfsSourceAdmin Class TfsVersion Class VB6 Class VC6 Class VSDevEnv Class HttpWebRequest Class Iis6AppPool Class Iis6ServiceExtensionFile Class Iis6VirtualDirectory Class Iis6Website Class Iis7Application Class Iis7AppPool Class Iis7Binding Class Iis7Website Class WebClient Class XmlFile Class XmlTask Class