Generate the .targets file.
(targets_path, msbuild_rules)
| 2468 | |
| 2469 | |
| 2470 | def _GenerateMSBuildRuleTargetsFile(targets_path, msbuild_rules): |
| 2471 | """Generate the .targets file.""" |
| 2472 | content = [ |
| 2473 | "Project", |
| 2474 | {"xmlns": "http://schemas.microsoft.com/developer/msbuild/2003"}, |
| 2475 | ] |
| 2476 | item_group = [ |
| 2477 | "ItemGroup", |
| 2478 | [ |
| 2479 | "PropertyPageSchema", |
| 2480 | {"Include": "$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml"}, |
| 2481 | ], |
| 2482 | ] |
| 2483 | for rule in msbuild_rules: |
| 2484 | item_group.append( |
| 2485 | [ |
| 2486 | "AvailableItemName", |
| 2487 | {"Include": rule.rule_name}, |
| 2488 | ["Targets", rule.target_name], |
| 2489 | ] |
| 2490 | ) |
| 2491 | content.append(item_group) |
| 2492 | |
| 2493 | for rule in msbuild_rules: |
| 2494 | content.append( |
| 2495 | [ |
| 2496 | "UsingTask", |
| 2497 | { |
| 2498 | "TaskName": rule.rule_name, |
| 2499 | "TaskFactory": "XamlTaskFactory", |
| 2500 | "AssemblyName": "Microsoft.Build.Tasks.v4.0", |
| 2501 | }, |
| 2502 | ["Task", "$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml"], |
| 2503 | ] |
| 2504 | ) |
| 2505 | for rule in msbuild_rules: |
| 2506 | rule_name = rule.rule_name |
| 2507 | target_outputs = "%%(%s.Outputs)" % rule_name |
| 2508 | target_inputs = ( |
| 2509 | "%%(%s.Identity);%%(%s.AdditionalDependencies);$(MSBuildProjectFile)" |
| 2510 | ) % (rule_name, rule_name) |
| 2511 | rule_inputs = "%%(%s.Identity)" % rule_name |
| 2512 | extension_condition = ( |
| 2513 | "'%(Extension)'=='.obj' or " |
| 2514 | "'%(Extension)'=='.res' or " |
| 2515 | "'%(Extension)'=='.rsc' or " |
| 2516 | "'%(Extension)'=='.lib'" |
| 2517 | ) |
| 2518 | remove_section = [ |
| 2519 | "ItemGroup", |
| 2520 | {"Condition": "'@(SelectedFiles)' != ''"}, |
| 2521 | [ |
| 2522 | rule_name, |
| 2523 | { |
| 2524 | "Remove": "@(%s)" % rule_name, |
| 2525 | "Condition": "'%(Identity)' != '@(SelectedFiles)'", |
| 2526 | }, |
| 2527 | ], |
no test coverage detected