System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 07eee0061616c74d80b41173eec249b6b754ce06:


0000: 3c 21 2d 2d 0d 0a 20 2a 0d 0a 20 2a 20 53 51 4c  <!--.. *.. * SQL
0010: 69 74 65 2e 4e 45 54 2e 74 61 72 67 65 74 73 20  ite.NET.targets 
0020: 2d 0d 0a 20 2a 0d 0a 20 2a 20 57 72 69 74 74 65  -.. *.. * Writte
0030: 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61 63 68  n by Joe Mistach
0040: 6b 69 6e 2e 0d 0a 20 2a 20 52 65 6c 65 61 73 65  kin... * Release
0050: 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20  d to the public 
0060: 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20 79  domain, use at y
0070: 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 20  our own risk!.. 
0080: 2a 0d 0a 2d 2d 3e 0d 0a 3c 50 72 6f 6a 65 63 74  *..-->..<Project
0090: 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 73   xmlns="http://s
00a0: 63 68 65 6d 61 73 2e 6d 69 63 72 6f 73 6f 66 74  chemas.microsoft
00b0: 2e 63 6f 6d 2f 64 65 76 65 6c 6f 70 65 72 2f 6d  .com/developer/m
00c0: 73 62 75 69 6c 64 2f 32 30 30 33 22 3e 0d 0a 20  sbuild/2003">.. 
00d0: 20 3c 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a   <!--..  *******
00e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2a 2a 20 20 20  *******..  **   
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 4c 6f 61 64 20 50 65 72 2d         Load Per-
0150: 55 73 65 72 20 53 65 74 74 69 6e 67 73 20 20 20  User Settings   
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 20 20 20 20 20 20 20 2a 2a 0d 0a 20 20 2a 2a 2a         **..  ***
0180: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0190: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
01a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
01b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
01c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2d  ***********..  -
01d0: 2d 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d 0a 20 20  ->....  <!--..  
01e0: 20 20 20 20 4e 4f 54 45 3a 20 49 66 20 74 68 65      NOTE: If the
01f0: 20 70 65 72 2d 75 73 65 72 20 73 65 74 74 69 6e   per-user settin
0200: 67 73 20 66 69 6c 65 20 65 78 69 73 74 73 2c 20  gs file exists, 
0210: 69 6d 70 6f 72 74 20 69 74 20 6e 6f 77 2e 20 20  import it now.  
0220: 54 68 65 20 63 6f 6e 74 61 69 6e 65 64 0d 0a 20  The contained.. 
0230: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 74 69             setti
0240: 6e 67 73 2c 20 69 66 20 61 6e 79 2c 20 77 69 6c  ngs, if any, wil
0250: 6c 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 64  l override the d
0260: 65 66 61 75 6c 74 20 6f 6e 65 73 20 70 72 6f 76  efault ones prov
0270: 69 64 65 64 20 62 65 6c 6f 77 2e 0d 0a 20 20 2d  ided below...  -
0280: 2d 3e 0d 0a 20 20 3c 49 6d 70 6f 72 74 20 50 72  ->..  <Import Pr
0290: 6f 6a 65 63 74 3d 22 24 28 53 51 4c 69 74 65 4e  oject="$(SQLiteN
02a0: 65 74 44 69 72 29 5c 54 61 72 67 65 74 73 5c 53  etDir)\Targets\S
02b0: 51 4c 69 74 65 2e 4e 45 54 2e 74 61 72 67 65 74  QLite.NET.target
02c0: 73 2e 75 73 65 72 22 0d 0a 20 20 20 20 20 20 20  s.user"..       
02d0: 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 45 78     Condition="Ex
02e0: 69 73 74 73 28 27 24 28 53 51 4c 69 74 65 4e 65  ists('$(SQLiteNe
02f0: 74 44 69 72 29 5c 54 61 72 67 65 74 73 5c 53 51  tDir)\Targets\SQ
0300: 4c 69 74 65 2e 4e 45 54 2e 74 61 72 67 65 74 73  Lite.NET.targets
0310: 2e 75 73 65 72 27 29 22 20 2f 3e 0d 0a 0d 0a 20  .user')" />.... 
0320: 20 3c 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a   <!--..  *******
0330: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0340: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0350: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0360: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0370: 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2a 2a 20 20 20  *******..  **   
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0390: 20 20 20 20 20 20 5b 46 61 69 72 6c 79 5d 20 47        [Fairly] G
03a0: 65 6e 65 72 69 63 20 54 61 72 67 65 74 73 20 20  eneric Targets  
03b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03c0: 20 20 20 20 20 20 20 2a 2a 0d 0a 20 20 2a 2a 2a         **..  ***
03d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
03e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
03f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0400: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0410: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2d  ***********..  -
0420: 2d 3e 0d 0a 0d 0a 20 20 3c 54 61 72 67 65 74 20  ->....  <Target 
0430: 4e 61 6d 65 3d 22 45 6d 62 65 64 45 78 65 4d 61  Name="EmbedExeMa
0440: 6e 69 66 65 73 74 22 0d 0a 20 20 20 20 20 20 20  nifest"..       
0450: 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24     Condition="'$
0460: 28 45 6d 62 65 64 45 78 65 4d 61 6e 69 66 65 73  (EmbedExeManifes
0470: 74 29 27 20 21 3d 20 27 66 61 6c 73 65 27 20 41  t)' != 'false' A
0480: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
0490: 20 20 20 20 20 20 20 20 20 27 24 28 4d 53 42 75           '$(MSBu
04a0: 69 6c 64 50 72 6f 6a 65 63 74 44 69 72 65 63 74  ildProjectDirect
04b0: 6f 72 79 29 27 20 21 3d 20 27 27 20 41 6e 64 0d  ory)' != '' And.
04c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
04d0: 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24 28        Exists('$(
04e0: 4d 53 42 75 69 6c 64 50 72 6f 6a 65 63 74 44 69  MSBuildProjectDi
04f0: 72 65 63 74 6f 72 79 29 5c 52 65 73 6f 75 72 63  rectory)\Resourc
0500: 65 73 5c 6d 61 6e 69 66 65 73 74 2e 78 6d 6c 27  es\manifest.xml'
0510: 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e  )"..          In
0520: 70 75 74 73 3d 22 24 28 54 61 72 67 65 74 50 61  puts="$(TargetPa
0530: 74 68 29 3b 24 28 4d 53 42 75 69 6c 64 50 72 6f  th);$(MSBuildPro
0540: 6a 65 63 74 44 69 72 65 63 74 6f 72 79 29 5c 52  jectDirectory)\R
0550: 65 73 6f 75 72 63 65 73 5c 6d 61 6e 69 66 65 73  esources\manifes
0560: 74 2e 78 6d 6c 22 0d 0a 20 20 20 20 20 20 20 20  t.xml"..        
0570: 20 20 4f 75 74 70 75 74 73 3d 22 24 28 54 61 72    Outputs="$(Tar
0580: 67 65 74 50 61 74 68 29 2e 45 6d 62 65 64 45 78  getPath).EmbedEx
0590: 65 4d 61 6e 69 66 65 73 74 2e 64 6f 6e 65 22 3e  eManifest.done">
05a0: 0d 0a 20 20 20 20 3c 47 65 74 46 72 61 6d 65 77  ..    <GetFramew
05b0: 6f 72 6b 53 44 4b 50 61 74 68 3e 0d 0a 20 20 20  orkSDKPath>..   
05c0: 20 20 20 3c 4f 75 74 70 75 74 20 54 61 73 6b 50     <Output TaskP
05d0: 61 72 61 6d 65 74 65 72 3d 22 50 61 74 68 22 0d  arameter="Path".
05e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50  .              P
05f0: 72 6f 70 65 72 74 79 4e 61 6d 65 3d 22 44 69 72  ropertyName="Dir
0600: 46 6f 72 4d 61 6e 69 66 65 73 74 54 6f 6f 6c 22  ForManifestTool"
0610: 20 2f 3e 0d 0a 20 20 20 20 3c 2f 47 65 74 46 72   />..    </GetFr
0620: 61 6d 65 77 6f 72 6b 53 44 4b 50 61 74 68 3e 0d  ameworkSDKPath>.
0630: 0a 0d 0a 20 20 20 20 3c 45 78 65 63 20 43 6f 6e  ...    <Exec Con
0640: 64 69 74 69 6f 6e 3d 22 27 24 28 44 69 72 46 6f  dition="'$(DirFo
0650: 72 4d 61 6e 69 66 65 73 74 54 6f 6f 6c 29 27 20  rManifestTool)' 
0660: 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20  != '' And..     
0670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0680: 48 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68  HasTrailingSlash
0690: 28 27 24 28 44 69 72 46 6f 72 4d 61 6e 69 66 65  ('$(DirForManife
06a0: 73 74 54 6f 6f 6c 29 27 29 20 41 6e 64 0d 0a 20  stTool)') And.. 
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06c0: 20 20 20 20 45 78 69 73 74 73 28 27 24 28 44 69      Exists('$(Di
06d0: 72 46 6f 72 4d 61 6e 69 66 65 73 74 54 6f 6f 6c  rForManifestTool
06e0: 29 62 69 6e 5c 6d 74 2e 65 78 65 27 29 22 0d 0a  )bin\mt.exe')"..
06f0: 20 20 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e            Comman
0700: 64 3d 22 26 71 75 6f 74 3b 24 28 44 69 72 46 6f  d="&quot;$(DirFo
0710: 72 4d 61 6e 69 66 65 73 74 54 6f 6f 6c 29 62 69  rManifestTool)bi
0720: 6e 5c 6d 74 2e 65 78 65 26 71 75 6f 74 3b 20 2d  n\mt.exe&quot; -
0730: 6d 61 6e 69 66 65 73 74 20 26 71 75 6f 74 3b 24  manifest &quot;$
0740: 28 4d 53 42 75 69 6c 64 50 72 6f 6a 65 63 74 44  (MSBuildProjectD
0750: 69 72 65 63 74 6f 72 79 29 5c 52 65 73 6f 75 72  irectory)\Resour
0760: 63 65 73 5c 6d 61 6e 69 66 65 73 74 2e 78 6d 6c  ces\manifest.xml
0770: 26 71 75 6f 74 3b 20 2d 6f 75 74 70 75 74 72 65  &quot; -outputre
0780: 73 6f 75 72 63 65 3a 26 71 75 6f 74 3b 24 28 54  source:&quot;$(T
0790: 61 72 67 65 74 50 61 74 68 29 26 71 75 6f 74 3b  argetPath)&quot;
07a0: 3b 31 22 20 2f 3e 0d 0a 0d 0a 20 20 20 20 3c 54  ;1" />....    <T
07b0: 6f 75 63 68 20 41 6c 77 61 79 73 43 72 65 61 74  ouch AlwaysCreat
07c0: 65 3d 22 74 72 75 65 22 0d 0a 20 20 20 20 20 20  e="true"..      
07d0: 20 20 20 20 20 46 69 6c 65 73 3d 22 24 28 54 61       Files="$(Ta
07e0: 72 67 65 74 50 61 74 68 29 2e 45 6d 62 65 64 45  rgetPath).EmbedE
07f0: 78 65 4d 61 6e 69 66 65 73 74 2e 64 6f 6e 65 22  xeManifest.done"
0800: 20 2f 3e 0d 0a 20 20 3c 2f 54 61 72 67 65 74 3e   />..  </Target>
0810: 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d 0a 20 20 2a 2a  ....  <!--..  **
0820: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0840: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0850: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0860: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20  ************..  
0870: 2d 2d 3e 0d 0a 0d 0a 20 20 3c 54 61 72 67 65 74  -->....  <Target
0880: 20 4e 61 6d 65 3d 22 53 74 72 6f 6e 67 4e 61 6d   Name="StrongNam
0890: 65 53 69 67 6e 46 72 61 6d 65 77 6f 72 6b 54 61  eSignFrameworkTa
08a0: 72 67 65 74 50 61 74 68 22 0d 0a 20 20 20 20 20  rgetPath"..     
08b0: 20 20 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22       Condition="
08c0: 27 24 28 53 74 72 6f 6e 67 4e 61 6d 65 53 69 67  '$(StrongNameSig
08d0: 6e 46 72 61 6d 65 77 6f 72 6b 54 61 72 67 65 74  nFrameworkTarget
08e0: 50 61 74 68 29 27 20 21 3d 20 27 66 61 6c 73 65  Path)' != 'false
08f0: 27 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  ' And..         
0900: 20 20 20 20 20 20 20 20 20 20 20 20 27 24 28 53              '$(S
0910: 69 67 6e 41 73 73 65 6d 62 6c 79 29 27 20 21 3d  ignAssembly)' !=
0920: 20 27 66 61 6c 73 65 27 20 41 6e 64 0d 0a 20 20   'false' And..  
0930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0940: 20 20 20 45 78 69 73 74 73 28 27 24 28 41 73 73     Exists('$(Ass
0950: 65 6d 62 6c 79 4f 72 69 67 69 6e 61 74 6f 72 4b  emblyOriginatorK
0960: 65 79 46 69 6c 65 29 27 29 22 0d 0a 20 20 20 20  eyFile)')"..    
0970: 20 20 20 20 20 20 49 6e 70 75 74 73 3d 22 24 28        Inputs="$(
0980: 54 61 72 67 65 74 50 61 74 68 29 22 0d 0a 20 20  TargetPath)"..  
0990: 20 20 20 20 20 20 20 20 4f 75 74 70 75 74 73 3d          Outputs=
09a0: 22 24 28 54 61 72 67 65 74 50 61 74 68 29 2e 53  "$(TargetPath).S
09b0: 74 72 6f 6e 67 4e 61 6d 65 53 69 67 6e 2e 64 6f  trongNameSign.do
09c0: 6e 65 22 3e 0d 0a 20 20 20 20 3c 47 65 74 46 72  ne">..    <GetFr
09d0: 61 6d 65 77 6f 72 6b 53 44 4b 50 61 74 68 3e 0d  ameworkSDKPath>.
09e0: 0a 20 20 20 20 20 20 3c 4f 75 74 70 75 74 20 54  .      <Output T
09f0: 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22 50 61  askParameter="Pa
0a00: 74 68 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th"..           
0a10: 20 20 20 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d     PropertyName=
0a20: 22 44 69 72 46 6f 72 53 74 72 6f 6e 67 4e 61 6d  "DirForStrongNam
0a30: 65 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 47 65 74  e" />..    </Get
0a40: 46 72 61 6d 65 77 6f 72 6b 53 44 4b 50 61 74 68  FrameworkSDKPath
0a50: 3e 0d 0a 0d 0a 20 20 20 20 3c 45 78 65 63 20 43  >....    <Exec C
0a60: 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 44 69 72  ondition="'$(Dir
0a70: 46 6f 72 53 74 72 6f 6e 67 4e 61 6d 65 29 27 20  ForStrongName)' 
0a80: 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20  != '' And..     
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0aa0: 48 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68  HasTrailingSlash
0ab0: 28 27 24 28 44 69 72 46 6f 72 53 74 72 6f 6e 67  ('$(DirForStrong
0ac0: 4e 61 6d 65 29 27 29 20 41 6e 64 0d 0a 20 20 20  Name)') And..   
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ae0: 20 20 45 78 69 73 74 73 28 27 24 28 44 69 72 46    Exists('$(DirF
0af0: 6f 72 53 74 72 6f 6e 67 4e 61 6d 65 29 62 69 6e  orStrongName)bin
0b00: 5c 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20 20 20  \sn.exe')"..    
0b10: 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d 22 26        Command="&
0b20: 71 75 6f 74 3b 24 28 44 69 72 46 6f 72 53 74 72  quot;$(DirForStr
0b30: 6f 6e 67 4e 61 6d 65 29 62 69 6e 5c 73 6e 2e 65  ongName)bin\sn.e
0b40: 78 65 26 71 75 6f 74 3b 20 2d 52 61 20 26 71 75  xe&quot; -Ra &qu
0b50: 6f 74 3b 24 28 54 61 72 67 65 74 50 61 74 68 29  ot;$(TargetPath)
0b60: 26 71 75 6f 74 3b 20 26 71 75 6f 74 3b 24 28 41  &quot; &quot;$(A
0b70: 73 73 65 6d 62 6c 79 4f 72 69 67 69 6e 61 74 6f  ssemblyOriginato
0b80: 72 4b 65 79 46 69 6c 65 29 26 71 75 6f 74 3b 22  rKeyFile)&quot;"
0b90: 20 2f 3e 0d 0a 0d 0a 20 20 20 20 3c 54 6f 75 63   />....    <Touc
0ba0: 68 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28  h Condition="'$(
0bb0: 44 69 72 46 6f 72 53 74 72 6f 6e 67 4e 61 6d 65  DirForStrongName
0bc0: 29 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20  )' != '' And..  
0bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0be0: 20 20 20 20 48 61 73 54 72 61 69 6c 69 6e 67 53      HasTrailingS
0bf0: 6c 61 73 68 28 27 24 28 44 69 72 46 6f 72 53 74  lash('$(DirForSt
0c00: 72 6f 6e 67 4e 61 6d 65 29 27 29 20 41 6e 64 0d  rongName)') And.
0c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0c20: 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24         Exists('$
0c30: 28 44 69 72 46 6f 72 53 74 72 6f 6e 67 4e 61 6d  (DirForStrongNam
0c40: 65 29 62 69 6e 5c 73 6e 2e 65 78 65 27 29 22 0d  e)bin\sn.exe')".
0c50: 0a 20 20 20 20 20 20 20 20 20 20 20 41 6c 77 61  .           Alwa
0c60: 79 73 43 72 65 61 74 65 3d 22 74 72 75 65 22 0d  ysCreate="true".
0c70: 0a 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65  .           File
0c80: 73 3d 22 24 28 54 61 72 67 65 74 50 61 74 68 29  s="$(TargetPath)
0c90: 2e 53 74 72 6f 6e 67 4e 61 6d 65 53 69 67 6e 2e  .StrongNameSign.
0ca0: 64 6f 6e 65 22 20 2f 3e 0d 0a 20 20 3c 2f 54 61  done" />..  </Ta
0cb0: 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d  rget>....  <!--.
0cc0: 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .  *************
0cd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0ce0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0cf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0d00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0d10: 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a 20 20 3c 54  *..  -->....  <T
0d20: 61 72 67 65 74 20 4e 61 6d 65 3d 22 53 74 72 6f  arget Name="Stro
0d30: 6e 67 4e 61 6d 65 53 69 67 6e 53 64 6b 54 6f 6f  ngNameSignSdkToo
0d40: 6c 73 54 61 72 67 65 74 50 61 74 68 22 0d 0a 20  lsTargetPath".. 
0d50: 20 20 20 20 20 20 20 20 20 43 6f 6e 64 69 74 69           Conditi
0d60: 6f 6e 3d 22 27 24 28 53 74 72 6f 6e 67 4e 61 6d  on="'$(StrongNam
0d70: 65 53 69 67 6e 53 64 6b 54 6f 6f 6c 73 54 61 72  eSignSdkToolsTar
0d80: 67 65 74 50 61 74 68 29 27 20 21 3d 20 27 66 61  getPath)' != 'fa
0d90: 6c 73 65 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  lse' And..      
0da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27                 '
0db0: 24 28 53 69 67 6e 41 73 73 65 6d 62 6c 79 29 27  $(SignAssembly)'
0dc0: 20 21 3d 20 27 66 61 6c 73 65 27 20 41 6e 64 0d   != 'false' And.
0dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0de0: 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24 28        Exists('$(
0df0: 41 73 73 65 6d 62 6c 79 4f 72 69 67 69 6e 61 74  AssemblyOriginat
0e00: 6f 72 4b 65 79 46 69 6c 65 29 27 29 22 0d 0a 20  orKeyFile)')".. 
0e10: 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 73 3d           Inputs=
0e20: 22 24 28 54 61 72 67 65 74 50 61 74 68 29 22 0d  "$(TargetPath)".
0e30: 0a 20 20 20 20 20 20 20 20 20 20 4f 75 74 70 75  .          Outpu
0e40: 74 73 3d 22 24 28 54 61 72 67 65 74 50 61 74 68  ts="$(TargetPath
0e50: 29 2e 53 74 72 6f 6e 67 4e 61 6d 65 53 69 67 6e  ).StrongNameSign
0e60: 2e 64 6f 6e 65 22 3e 0d 0a 20 20 20 20 3c 45 78  .done">..    <Ex
0e70: 65 63 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24  ec Condition="'$
0e80: 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b  (TargetFramework
0e90: 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63 74 6f 72  SDKToolsDirector
0ea0: 79 29 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20  y)' != '' And.. 
0eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ec0: 20 20 20 20 48 61 73 54 72 61 69 6c 69 6e 67 53      HasTrailingS
0ed0: 6c 61 73 68 28 27 24 28 54 61 72 67 65 74 46 72  lash('$(TargetFr
0ee0: 61 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44  ameworkSDKToolsD
0ef0: 69 72 65 63 74 6f 72 79 29 27 29 20 41 6e 64 0d  irectory)') And.
0f00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0f10: 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24 28        Exists('$(
0f20: 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 53  TargetFrameworkS
0f30: 44 4b 54 6f 6f 6c 73 44 69 72 65 63 74 6f 72 79  DKToolsDirectory
0f40: 29 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20 20 20  )sn.exe')"..    
0f50: 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d 22 26        Command="&
0f60: 71 75 6f 74 3b 24 28 54 61 72 67 65 74 46 72 61  quot;$(TargetFra
0f70: 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69  meworkSDKToolsDi
0f80: 72 65 63 74 6f 72 79 29 73 6e 2e 65 78 65 26 71  rectory)sn.exe&q
0f90: 75 6f 74 3b 20 2d 52 61 20 26 71 75 6f 74 3b 24  uot; -Ra &quot;$
0fa0: 28 54 61 72 67 65 74 50 61 74 68 29 26 71 75 6f  (TargetPath)&quo
0fb0: 74 3b 20 26 71 75 6f 74 3b 24 28 41 73 73 65 6d  t; &quot;$(Assem
0fc0: 62 6c 79 4f 72 69 67 69 6e 61 74 6f 72 4b 65 79  blyOriginatorKey
0fd0: 46 69 6c 65 29 26 71 75 6f 74 3b 22 20 2f 3e 0d  File)&quot;" />.
0fe0: 0a 0d 0a 20 20 20 20 3c 54 6f 75 63 68 20 43 6f  ...    <Touch Co
0ff0: 6e 64 69 74 69 6f 6e 3d 22 27 24 28 54 61 72 67  ndition="'$(Targ
1000: 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f  etFrameworkSDKTo
1010: 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 27 20 21  olsDirectory)' !
1020: 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  = '' And..      
1030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1040: 48 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68  HasTrailingSlash
1050: 28 27 24 28 54 61 72 67 65 74 46 72 61 6d 65 77  ('$(TargetFramew
1060: 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63  orkSDKToolsDirec
1070: 74 6f 72 79 29 27 29 20 41 6e 64 0d 0a 20 20 20  tory)') And..   
1080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1090: 20 20 20 45 78 69 73 74 73 28 27 24 28 54 61 72     Exists('$(Tar
10a0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54  getFrameworkSDKT
10b0: 6f 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 73 6e  oolsDirectory)sn
10c0: 2e 65 78 65 27 29 22 0d 0a 20 20 20 20 20 20 20  .exe')"..       
10d0: 20 20 20 20 41 6c 77 61 79 73 43 72 65 61 74 65      AlwaysCreate
10e0: 3d 22 74 72 75 65 22 0d 0a 20 20 20 20 20 20 20  ="true"..       
10f0: 20 20 20 20 46 69 6c 65 73 3d 22 24 28 54 61 72      Files="$(Tar
1100: 67 65 74 50 61 74 68 29 2e 53 74 72 6f 6e 67 4e  getPath).StrongN
1110: 61 6d 65 53 69 67 6e 2e 64 6f 6e 65 22 20 2f 3e  ameSign.done" />
1120: 0d 0a 20 20 3c 2f 54 61 72 67 65 74 3e 0d 0a 0d  ..  </Target>...
1130: 0a 20 20 3c 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a  .  <!--..  *****
1140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1170: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1180: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e  *********..  -->
1190: 0d 0a 0d 0a 20 20 3c 54 61 72 67 65 74 20 4e 61  ....  <Target Na
11a0: 6d 65 3d 22 43 6c 6f 6e 65 41 6e 64 4d 61 72 6b  me="CloneAndMark
11b0: 33 32 42 69 74 4f 6e 6c 79 46 72 61 6d 65 77 6f  32BitOnlyFramewo
11c0: 72 6b 54 61 72 67 65 74 4e 61 6d 65 33 32 22 0d  rkTargetName32".
11d0: 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 64 69  .          Condi
11e0: 74 69 6f 6e 3d 22 27 24 28 43 6c 6f 6e 65 41 6e  tion="'$(CloneAn
11f0: 64 4d 61 72 6b 33 32 42 69 74 4f 6e 6c 79 46 72  dMark32BitOnlyFr
1200: 61 6d 65 77 6f 72 6b 54 61 72 67 65 74 4e 61 6d  ameworkTargetNam
1210: 65 33 32 29 27 20 21 3d 20 27 66 61 6c 73 65 27  e32)' != 'false'
1220: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 49 6e 70  "..          Inp
1230: 75 74 73 3d 22 24 28 54 61 72 67 65 74 50 61 74  uts="$(TargetPat
1240: 68 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 4f  h)"..          O
1250: 75 74 70 75 74 73 3d 22 24 28 54 61 72 67 65 74  utputs="$(Target
1260: 50 61 74 68 29 2e 43 6c 6f 6e 65 41 6e 64 4d 61  Path).CloneAndMa
1270: 72 6b 33 32 42 69 74 4f 6e 6c 79 2e 64 6f 6e 65  rk32BitOnly.done
1280: 22 3e 0d 0a 20 20 20 20 3c 47 65 74 46 72 61 6d  ">..    <GetFram
1290: 65 77 6f 72 6b 53 44 4b 50 61 74 68 3e 0d 0a 20  eworkSDKPath>.. 
12a0: 20 20 20 20 20 3c 4f 75 74 70 75 74 20 54 61 73       <Output Tas
12b0: 6b 50 61 72 61 6d 65 74 65 72 3d 22 50 61 74 68  kParameter="Path
12c0: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "..             
12d0: 20 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 22 44   PropertyName="D
12e0: 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72  irForCloneAndMar
12f0: 6b 33 32 42 69 74 4f 6e 6c 79 22 20 2f 3e 0d 0a  k32BitOnly" />..
1300: 20 20 20 20 3c 2f 47 65 74 46 72 61 6d 65 77 6f      </GetFramewo
1310: 72 6b 53 44 4b 50 61 74 68 3e 0d 0a 0d 0a 20 20  rkSDKPath>....  
1320: 20 20 3c 43 6f 70 79 20 53 6f 75 72 63 65 46 69    <Copy SourceFi
1330: 6c 65 73 3d 22 24 28 54 61 72 67 65 74 50 61 74  les="$(TargetPat
1340: 68 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 44  h)"..          D
1350: 65 73 74 69 6e 61 74 69 6f 6e 46 69 6c 65 73 3d  estinationFiles=
1360: 22 24 28 54 61 72 67 65 74 44 69 72 29 24 28 54  "$(TargetDir)$(T
1370: 61 72 67 65 74 4e 61 6d 65 29 33 32 24 28 54 61  argetName)32$(Ta
1380: 72 67 65 74 45 78 74 29 22 20 2f 3e 0d 0a 0d 0a  rgetExt)" />....
1390: 20 20 20 20 3c 43 6f 70 79 20 53 6f 75 72 63 65      <Copy Source
13a0: 46 69 6c 65 73 3d 22 24 28 54 61 72 67 65 74 50  Files="$(TargetP
13b0: 61 74 68 29 2e 63 6f 6e 66 69 67 22 0d 0a 20 20  ath).config"..  
13c0: 20 20 20 20 20 20 20 20 44 65 73 74 69 6e 61 74          Destinat
13d0: 69 6f 6e 46 69 6c 65 73 3d 22 24 28 54 61 72 67  ionFiles="$(Targ
13e0: 65 74 44 69 72 29 24 28 54 61 72 67 65 74 4e 61  etDir)$(TargetNa
13f0: 6d 65 29 33 32 24 28 54 61 72 67 65 74 45 78 74  me)32$(TargetExt
1400: 29 2e 63 6f 6e 66 69 67 22 0d 0a 20 20 20 20 20  ).config"..     
1410: 20 20 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22       Condition="
1420: 45 78 69 73 74 73 28 27 24 28 54 61 72 67 65 74  Exists('$(Target
1430: 50 61 74 68 29 2e 63 6f 6e 66 69 67 27 29 22 20  Path).config')" 
1440: 2f 3e 0d 0a 0d 0a 20 20 20 20 3c 45 78 65 63 20  />....    <Exec 
1450: 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 44 69  Condition="'$(Di
1460: 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72 6b  rForCloneAndMark
1470: 33 32 42 69 74 4f 6e 6c 79 29 27 20 21 3d 20 27  32BitOnly)' != '
1480: 27 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  ' And..         
1490: 20 20 20 20 20 20 20 20 20 20 20 20 48 61 73 54              HasT
14a0: 72 61 69 6c 69 6e 67 53 6c 61 73 68 28 27 24 28  railingSlash('$(
14b0: 44 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61  DirForCloneAndMa
14c0: 72 6b 33 32 42 69 74 4f 6e 6c 79 29 27 29 20 41  rk32BitOnly)') A
14d0: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
14e0: 20 20 20 20 20 20 20 20 20 45 78 69 73 74 73 28           Exists(
14f0: 27 24 28 44 69 72 46 6f 72 43 6c 6f 6e 65 41 6e  '$(DirForCloneAn
1500: 64 4d 61 72 6b 33 32 42 69 74 4f 6e 6c 79 29 62  dMark32BitOnly)b
1510: 69 6e 5c 43 6f 72 46 6c 61 67 73 2e 65 78 65 27  in\CorFlags.exe'
1520: 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f  )"..          Co
1530: 6d 6d 61 6e 64 3d 22 26 71 75 6f 74 3b 24 28 44  mmand="&quot;$(D
1540: 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72  irForCloneAndMar
1550: 6b 33 32 42 69 74 4f 6e 6c 79 29 62 69 6e 5c 43  k32BitOnly)bin\C
1560: 6f 72 46 6c 61 67 73 2e 65 78 65 26 71 75 6f 74  orFlags.exe&quot
1570: 3b 20 26 71 75 6f 74 3b 24 28 54 61 72 67 65 74  ; &quot;$(Target
1580: 44 69 72 29 24 28 54 61 72 67 65 74 4e 61 6d 65  Dir)$(TargetName
1590: 29 33 32 24 28 54 61 72 67 65 74 45 78 74 29 26  )32$(TargetExt)&
15a0: 71 75 6f 74 3b 20 2f 33 32 42 49 54 2b 20 2f 46  quot; /32BIT+ /F
15b0: 6f 72 63 65 20 31 26 67 74 3b 4e 55 4c 22 20 2f  orce 1&gt;NUL" /
15c0: 3e 0d 0a 0d 0a 20 20 20 20 3c 45 78 65 63 20 43  >....    <Exec C
15d0: 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 44 69 72  ondition="'$(Dir
15e0: 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72 6b 33  ForCloneAndMark3
15f0: 32 42 69 74 4f 6e 6c 79 29 27 20 21 3d 20 27 27  2BitOnly)' != ''
1600: 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   And..          
1610: 20 20 20 20 20 20 20 20 20 20 20 48 61 73 54 72             HasTr
1620: 61 69 6c 69 6e 67 53 6c 61 73 68 28 27 24 28 44  ailingSlash('$(D
1630: 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72  irForCloneAndMar
1640: 6b 33 32 42 69 74 4f 6e 6c 79 29 27 29 20 41 6e  k32BitOnly)') An
1650: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
1660: 20 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27          Exists('
1670: 24 28 44 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64  $(DirForCloneAnd
1680: 4d 61 72 6b 33 32 42 69 74 4f 6e 6c 79 29 62 69  Mark32BitOnly)bi
1690: 6e 5c 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20 20  n\sn.exe')"..   
16a0: 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d 22         Command="
16b0: 26 71 75 6f 74 3b 24 28 44 69 72 46 6f 72 43 6c  &quot;$(DirForCl
16c0: 6f 6e 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f  oneAndMark32BitO
16d0: 6e 6c 79 29 62 69 6e 5c 73 6e 2e 65 78 65 26 71  nly)bin\sn.exe&q
16e0: 75 6f 74 3b 20 2d 52 61 20 26 71 75 6f 74 3b 24  uot; -Ra &quot;$
16f0: 28 54 61 72 67 65 74 44 69 72 29 24 28 54 61 72  (TargetDir)$(Tar
1700: 67 65 74 4e 61 6d 65 29 33 32 24 28 54 61 72 67  getName)32$(Targ
1710: 65 74 45 78 74 29 26 71 75 6f 74 3b 20 26 71 75  etExt)&quot; &qu
1720: 6f 74 3b 24 28 41 73 73 65 6d 62 6c 79 4f 72 69  ot;$(AssemblyOri
1730: 67 69 6e 61 74 6f 72 4b 65 79 46 69 6c 65 29 26  ginatorKeyFile)&
1740: 71 75 6f 74 3b 22 20 2f 3e 0d 0a 0d 0a 20 20 20  quot;" />....   
1750: 20 3c 54 6f 75 63 68 20 43 6f 6e 64 69 74 69 6f   <Touch Conditio
1760: 6e 3d 22 27 24 28 44 69 72 46 6f 72 43 6c 6f 6e  n="'$(DirForClon
1770: 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f 6e 6c  eAndMark32BitOnl
1780: 79 29 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20  y)' != '' And.. 
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a0: 20 20 20 20 20 48 61 73 54 72 61 69 6c 69 6e 67       HasTrailing
17b0: 53 6c 61 73 68 28 27 24 28 44 69 72 46 6f 72 43  Slash('$(DirForC
17c0: 6c 6f 6e 65 41 6e 64 4d 61 72 6b 33 32 42 69 74  loneAndMark32Bit
17d0: 4f 6e 6c 79 29 27 29 20 41 6e 64 0d 0a 20 20 20  Only)') And..   
17e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f0: 20 20 20 45 78 69 73 74 73 28 27 24 28 44 69 72     Exists('$(Dir
1800: 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d 61 72 6b 33  ForCloneAndMark3
1810: 32 42 69 74 4f 6e 6c 79 29 62 69 6e 5c 43 6f 72  2BitOnly)bin\Cor
1820: 46 6c 61 67 73 2e 65 78 65 27 29 20 41 6e 64 0d  Flags.exe') And.
1830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1840: 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24         Exists('$
1850: 28 44 69 72 46 6f 72 43 6c 6f 6e 65 41 6e 64 4d  (DirForCloneAndM
1860: 61 72 6b 33 32 42 69 74 4f 6e 6c 79 29 62 69 6e  ark32BitOnly)bin
1870: 5c 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20 20 20  \sn.exe')"..    
1880: 20 20 20 20 20 20 20 41 6c 77 61 79 73 43 72 65         AlwaysCre
1890: 61 74 65 3d 22 74 72 75 65 22 0d 0a 20 20 20 20  ate="true"..    
18a0: 20 20 20 20 20 20 20 46 69 6c 65 73 3d 22 24 28         Files="$(
18b0: 54 61 72 67 65 74 50 61 74 68 29 2e 43 6c 6f 6e  TargetPath).Clon
18c0: 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f 6e 6c  eAndMark32BitOnl
18d0: 79 2e 64 6f 6e 65 22 20 2f 3e 0d 0a 20 20 3c 2f  y.done" />..  </
18e0: 54 61 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21 2d  Target>....  <!-
18f0: 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  -..  ***********
1900: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1910: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1920: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1930: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
1940: 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a 20 20  ***..  -->....  
1950: 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d 22 43 6c  <Target Name="Cl
1960: 6f 6e 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f  oneAndMark32BitO
1970: 6e 6c 79 53 64 6b 54 6f 6f 6c 73 54 61 72 67 65  nlySdkToolsTarge
1980: 74 4e 61 6d 65 33 32 22 0d 0a 20 20 20 20 20 20  tName32"..      
1990: 20 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27      Condition="'
19a0: 24 28 43 6c 6f 6e 65 41 6e 64 4d 61 72 6b 33 32  $(CloneAndMark32
19b0: 42 69 74 4f 6e 6c 79 53 64 6b 54 6f 6f 6c 73 54  BitOnlySdkToolsT
19c0: 61 72 67 65 74 4e 61 6d 65 33 32 29 27 20 21 3d  argetName32)' !=
19d0: 20 27 66 61 6c 73 65 27 22 0d 0a 20 20 20 20 20   'false'"..     
19e0: 20 20 20 20 20 49 6e 70 75 74 73 3d 22 24 28 54       Inputs="$(T
19f0: 61 72 67 65 74 50 61 74 68 29 22 0d 0a 20 20 20  argetPath)"..   
1a00: 20 20 20 20 20 20 20 4f 75 74 70 75 74 73 3d 22         Outputs="
1a10: 24 28 54 61 72 67 65 74 50 61 74 68 29 2e 43 6c  $(TargetPath).Cl
1a20: 6f 6e 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f  oneAndMark32BitO
1a30: 6e 6c 79 2e 64 6f 6e 65 22 3e 0d 0a 20 20 20 20  nly.done">..    
1a40: 3c 43 6f 70 79 20 53 6f 75 72 63 65 46 69 6c 65  <Copy SourceFile
1a50: 73 3d 22 24 28 54 61 72 67 65 74 50 61 74 68 29  s="$(TargetPath)
1a60: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 44 65 73  "..          Des
1a70: 74 69 6e 61 74 69 6f 6e 46 69 6c 65 73 3d 22 24  tinationFiles="$
1a80: 28 54 61 72 67 65 74 44 69 72 29 24 28 54 61 72  (TargetDir)$(Tar
1a90: 67 65 74 4e 61 6d 65 29 33 32 24 28 54 61 72 67  getName)32$(Targ
1aa0: 65 74 45 78 74 29 22 20 2f 3e 0d 0a 0d 0a 20 20  etExt)" />....  
1ab0: 20 20 3c 43 6f 70 79 20 53 6f 75 72 63 65 46 69    <Copy SourceFi
1ac0: 6c 65 73 3d 22 24 28 54 61 72 67 65 74 50 61 74  les="$(TargetPat
1ad0: 68 29 2e 63 6f 6e 66 69 67 22 0d 0a 20 20 20 20  h).config"..    
1ae0: 20 20 20 20 20 20 44 65 73 74 69 6e 61 74 69 6f        Destinatio
1af0: 6e 46 69 6c 65 73 3d 22 24 28 54 61 72 67 65 74  nFiles="$(Target
1b00: 44 69 72 29 24 28 54 61 72 67 65 74 4e 61 6d 65  Dir)$(TargetName
1b10: 29 33 32 24 28 54 61 72 67 65 74 45 78 74 29 2e  )32$(TargetExt).
1b20: 63 6f 6e 66 69 67 22 0d 0a 20 20 20 20 20 20 20  config"..       
1b30: 20 20 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 45 78     Condition="Ex
1b40: 69 73 74 73 28 27 24 28 54 61 72 67 65 74 50 61  ists('$(TargetPa
1b50: 74 68 29 2e 63 6f 6e 66 69 67 27 29 22 20 2f 3e  th).config')" />
1b60: 0d 0a 0d 0a 20 20 20 20 3c 45 78 65 63 20 43 6f  ....    <Exec Co
1b70: 6e 64 69 74 69 6f 6e 3d 22 27 24 28 54 61 72 67  ndition="'$(Targ
1b80: 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f  etFrameworkSDKTo
1b90: 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 27 20 21  olsDirectory)' !
1ba0: 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  = '' And..      
1bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
1bc0: 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68 28  asTrailingSlash(
1bd0: 27 24 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f  '$(TargetFramewo
1be0: 72 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63 74  rkSDKToolsDirect
1bf0: 6f 72 79 29 27 29 20 41 6e 64 0d 0a 20 20 20 20  ory)') And..    
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c10: 20 45 78 69 73 74 73 28 27 24 28 54 61 72 67 65   Exists('$(Targe
1c20: 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f  tFrameworkSDKToo
1c30: 6c 73 44 69 72 65 63 74 6f 72 79 29 43 6f 72 46  lsDirectory)CorF
1c40: 6c 61 67 73 2e 65 78 65 27 29 22 0d 0a 20 20 20  lags.exe')"..   
1c50: 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d 22         Command="
1c60: 26 71 75 6f 74 3b 24 28 54 61 72 67 65 74 46 72  &quot;$(TargetFr
1c70: 61 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44  ameworkSDKToolsD
1c80: 69 72 65 63 74 6f 72 79 29 43 6f 72 46 6c 61 67  irectory)CorFlag
1c90: 73 2e 65 78 65 26 71 75 6f 74 3b 20 26 71 75 6f  s.exe&quot; &quo
1ca0: 74 3b 24 28 54 61 72 67 65 74 44 69 72 29 24 28  t;$(TargetDir)$(
1cb0: 54 61 72 67 65 74 4e 61 6d 65 29 33 32 24 28 54  TargetName)32$(T
1cc0: 61 72 67 65 74 45 78 74 29 26 71 75 6f 74 3b 20  argetExt)&quot; 
1cd0: 2f 33 32 42 49 54 2b 20 2f 46 6f 72 63 65 20 31  /32BIT+ /Force 1
1ce0: 26 67 74 3b 4e 55 4c 22 20 2f 3e 0d 0a 0d 0a 20  &gt;NUL" />.... 
1cf0: 20 20 20 3c 45 78 65 63 20 43 6f 6e 64 69 74 69     <Exec Conditi
1d00: 6f 6e 3d 22 27 24 28 54 61 72 67 65 74 46 72 61  on="'$(TargetFra
1d10: 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69  meworkSDKToolsDi
1d20: 72 65 63 74 6f 72 79 29 27 20 21 3d 20 27 27 20  rectory)' != '' 
1d30: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
1d40: 20 20 20 20 20 20 20 20 20 20 48 61 73 54 72 61            HasTra
1d50: 69 6c 69 6e 67 53 6c 61 73 68 28 27 24 28 54 61  ilingSlash('$(Ta
1d60: 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b  rgetFrameworkSDK
1d70: 54 6f 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 27  ToolsDirectory)'
1d80: 29 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  ) And..         
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 45 78 69 73              Exis
1da0: 74 73 28 27 24 28 54 61 72 67 65 74 46 72 61 6d  ts('$(TargetFram
1db0: 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69 72  eworkSDKToolsDir
1dc0: 65 63 74 6f 72 79 29 73 6e 2e 65 78 65 27 29 22  ectory)sn.exe')"
1dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6d 6d  ..          Comm
1de0: 61 6e 64 3d 22 26 71 75 6f 74 3b 24 28 54 61 72  and="&quot;$(Tar
1df0: 67 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54  getFrameworkSDKT
1e00: 6f 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 73 6e  oolsDirectory)sn
1e10: 2e 65 78 65 26 71 75 6f 74 3b 20 2d 52 61 20 26  .exe&quot; -Ra &
1e20: 71 75 6f 74 3b 24 28 54 61 72 67 65 74 44 69 72  quot;$(TargetDir
1e30: 29 24 28 54 61 72 67 65 74 4e 61 6d 65 29 33 32  )$(TargetName)32
1e40: 24 28 54 61 72 67 65 74 45 78 74 29 26 71 75 6f  $(TargetExt)&quo
1e50: 74 3b 20 26 71 75 6f 74 3b 24 28 41 73 73 65 6d  t; &quot;$(Assem
1e60: 62 6c 79 4f 72 69 67 69 6e 61 74 6f 72 4b 65 79  blyOriginatorKey
1e70: 46 69 6c 65 29 26 71 75 6f 74 3b 22 20 2f 3e 0d  File)&quot;" />.
1e80: 0a 0d 0a 20 20 20 20 3c 54 6f 75 63 68 20 43 6f  ...    <Touch Co
1e90: 6e 64 69 74 69 6f 6e 3d 22 27 24 28 54 61 72 67  ndition="'$(Targ
1ea0: 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f  etFrameworkSDKTo
1eb0: 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 27 20 21  olsDirectory)' !
1ec0: 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  = '' And..      
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee0: 48 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68  HasTrailingSlash
1ef0: 28 27 24 28 54 61 72 67 65 74 46 72 61 6d 65 77  ('$(TargetFramew
1f00: 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63  orkSDKToolsDirec
1f10: 74 6f 72 79 29 27 29 20 41 6e 64 0d 0a 20 20 20  tory)') And..   
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f30: 20 20 20 45 78 69 73 74 73 28 27 24 28 54 61 72     Exists('$(Tar
1f40: 67 65 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54  getFrameworkSDKT
1f50: 6f 6f 6c 73 44 69 72 65 63 74 6f 72 79 29 43 6f  oolsDirectory)Co
1f60: 72 46 6c 61 67 73 2e 65 78 65 27 29 20 41 6e 64  rFlags.exe') And
1f70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f80: 20 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27          Exists('
1f90: 24 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  $(TargetFramewor
1fa0: 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63 74 6f  kSDKToolsDirecto
1fb0: 72 79 29 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20  ry)sn.exe')"..  
1fc0: 20 20 20 20 20 20 20 20 20 41 6c 77 61 79 73 43           AlwaysC
1fd0: 72 65 61 74 65 3d 22 74 72 75 65 22 0d 0a 20 20  reate="true"..  
1fe0: 20 20 20 20 20 20 20 20 20 46 69 6c 65 73 3d 22           Files="
1ff0: 24 28 54 61 72 67 65 74 50 61 74 68 29 2e 43 6c  $(TargetPath).Cl
2000: 6f 6e 65 41 6e 64 4d 61 72 6b 33 32 42 69 74 4f  oneAndMark32BitO
2010: 6e 6c 79 2e 64 6f 6e 65 22 20 2f 3e 0d 0a 20 20  nly.done" />..  
2020: 3c 2f 54 61 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c  </Target>....  <
2030: 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  !--..  *********
2040: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2050: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2060: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2070: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2080: 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a  *****..  -->....
2090: 20 20 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d 22    <Target Name="
20a0: 43 6c 65 61 6e 43 6f 6e 66 69 67 75 72 61 74 69  CleanConfigurati
20b0: 6f 6e 73 22 0d 0a 20 20 20 20 20 20 20 20 20 20  ons"..          
20c0: 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 4f 75  Condition="'$(Ou
20d0: 74 70 75 74 50 61 74 68 29 27 20 21 3d 20 27 27  tputPath)' != ''
20e0: 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   And..          
20f0: 20 20 20 20 20 20 20 20 20 20 20 48 61 73 54 72             HasTr
2100: 61 69 6c 69 6e 67 53 6c 61 73 68 28 27 24 28 4f  ailingSlash('$(O
2110: 75 74 70 75 74 50 61 74 68 29 27 29 20 41 6e 64  utputPath)') And
2120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2130: 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27 24         Exists('$
2140: 28 4f 75 74 70 75 74 50 61 74 68 29 27 29 22 3e  (OutputPath)')">
2150: 0d 0a 20 20 20 20 3c 43 72 65 61 74 65 49 74 65  ..    <CreateIte
2160: 6d 20 49 6e 63 6c 75 64 65 3d 22 24 28 4f 75 74  m Include="$(Out
2170: 70 75 74 50 61 74 68 29 2a 2e 63 6f 6e 66 69 67  putPath)*.config
2180: 22 3e 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70 75  ">..      <Outpu
2190: 74 20 49 74 65 6d 4e 61 6d 65 3d 22 43 6f 6e 66  t ItemName="Conf
21a0: 69 67 75 72 61 74 69 6f 6e 46 69 6c 65 73 22 20  igurationFiles" 
21b0: 54 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22 49  TaskParameter="I
21c0: 6e 63 6c 75 64 65 22 20 2f 3e 0d 0a 20 20 20 20  nclude" />..    
21d0: 3c 2f 43 72 65 61 74 65 49 74 65 6d 3e 0d 0a 0d  </CreateItem>...
21e0: 0a 20 20 20 20 3c 44 65 6c 65 74 65 20 43 6f 6e  .    <Delete Con
21f0: 64 69 74 69 6f 6e 3d 22 27 40 28 43 6f 6e 66 69  dition="'@(Confi
2200: 67 75 72 61 74 69 6f 6e 46 69 6c 65 73 29 27 20  gurationFiles)' 
2210: 21 3d 20 27 27 22 0d 0a 20 20 20 20 20 20 20 20  != ''"..        
2220: 20 20 20 20 46 69 6c 65 73 3d 22 40 28 43 6f 6e      Files="@(Con
2230: 66 69 67 75 72 61 74 69 6f 6e 46 69 6c 65 73 29  figurationFiles)
2240: 22 20 2f 3e 0d 0a 20 20 3c 2f 54 61 72 67 65 74  " />..  </Target
2250: 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d 0a 20 20 2a  >....  <!--..  *
2260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2270: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2280: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2290: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
22a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20  *************.. 
22b0: 20 2d 2d 3e 0d 0a 0d 0a 20 20 3c 54 61 72 67 65   -->....  <Targe
22c0: 74 20 4e 61 6d 65 3d 22 43 6f 70 79 43 6f 6e 66  t Name="CopyConf
22d0: 69 67 75 72 61 74 69 6f 6e 73 22 0d 0a 20 20 20  igurations"..   
22e0: 20 20 20 20 20 20 20 43 6f 6e 64 69 74 69 6f 6e         Condition
22f0: 3d 22 27 24 28 43 6f 70 79 43 6f 6e 66 69 67 75  ="'$(CopyConfigu
2300: 72 61 74 69 6f 6e 73 29 27 20 21 3d 20 27 66 61  rations)' != 'fa
2310: 6c 73 65 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  lse' And..      
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27                 '
2330: 24 28 4f 75 74 70 75 74 50 61 74 68 29 27 20 21  $(OutputPath)' !
2340: 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20 20  = '' And..      
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                 H
2360: 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73 68 28  asTrailingSlash(
2370: 27 24 28 4f 75 74 70 75 74 50 61 74 68 29 27 29  '$(OutputPath)')
2380: 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   And..          
2390: 20 20 20 20 20 20 20 20 20 20 20 45 78 69 73 74             Exist
23a0: 73 28 27 24 28 4f 75 74 70 75 74 50 61 74 68 29  s('$(OutputPath)
23b0: 27 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 49  ')"..          I
23c0: 6e 70 75 74 73 3d 22 24 28 54 61 72 67 65 74 50  nputs="$(TargetP
23d0: 61 74 68 29 22 0d 0a 20 20 20 20 20 20 20 20 20  ath)"..         
23e0: 20 4f 75 74 70 75 74 73 3d 22 24 28 54 61 72 67   Outputs="$(Targ
23f0: 65 74 50 61 74 68 29 2e 43 6f 70 79 43 6f 6e 66  etPath).CopyConf
2400: 69 67 75 72 61 74 69 6f 6e 73 2e 64 6f 6e 65 22  igurations.done"
2410: 3e 0d 0a 20 20 20 20 3c 43 72 65 61 74 65 49 74  >..    <CreateIt
2420: 65 6d 20 49 6e 63 6c 75 64 65 3d 22 43 6f 6e 66  em Include="Conf
2430: 69 67 75 72 61 74 69 6f 6e 73 5c 2a 2e 63 6f 6e  igurations\*.con
2440: 66 69 67 22 20 45 78 63 6c 75 64 65 3d 22 43 6f  fig" Exclude="Co
2450: 6e 66 69 67 75 72 61 74 69 6f 6e 73 5c 6e 6f 5f  nfigurations\no_
2460: 2a 22 3e 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70  *">..      <Outp
2470: 75 74 20 49 74 65 6d 4e 61 6d 65 3d 22 43 6f 6e  ut ItemName="Con
2480: 66 69 67 75 72 61 74 69 6f 6e 46 69 6c 65 73 22  figurationFiles"
2490: 20 54 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22   TaskParameter="
24a0: 49 6e 63 6c 75 64 65 22 20 2f 3e 0d 0a 20 20 20  Include" />..   
24b0: 20 3c 2f 43 72 65 61 74 65 49 74 65 6d 3e 0d 0a   </CreateItem>..
24c0: 0d 0a 20 20 20 20 3c 43 6f 70 79 20 53 6f 75 72  ..    <Copy Sour
24d0: 63 65 46 69 6c 65 73 3d 22 40 28 43 6f 6e 66 69  ceFiles="@(Confi
24e0: 67 75 72 61 74 69 6f 6e 46 69 6c 65 73 29 22 0d  gurationFiles)".
24f0: 0a 20 20 20 20 20 20 20 20 20 20 44 65 73 74 69  .          Desti
2500: 6e 61 74 69 6f 6e 46 6f 6c 64 65 72 3d 22 24 28  nationFolder="$(
2510: 4f 75 74 70 75 74 50 61 74 68 29 22 20 2f 3e 0d  OutputPath)" />.
2520: 0a 0d 0a 20 20 20 20 3c 54 6f 75 63 68 20 41 6c  ...    <Touch Al
2530: 77 61 79 73 43 72 65 61 74 65 3d 22 74 72 75 65  waysCreate="true
2540: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 46 69  "..           Fi
2550: 6c 65 73 3d 22 24 28 54 61 72 67 65 74 50 61 74  les="$(TargetPat
2560: 68 29 2e 43 6f 70 79 43 6f 6e 66 69 67 75 72 61  h).CopyConfigura
2570: 74 69 6f 6e 73 2e 64 6f 6e 65 22 20 2f 3e 0d 0a  tions.done" />..
2580: 20 20 3c 2f 54 61 72 67 65 74 3e 0d 0a 0d 0a 20    </Target>.... 
2590: 20 3c 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a   <!--..  *******
25a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
25b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
25c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
25d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
25e0: 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a  *******..  -->..
25f0: 0d 0a 20 20 3c 54 61 72 67 65 74 20 4e 61 6d 65  ..  <Target Name
2600: 3d 22 57 72 6f 6e 67 4e 65 74 46 78 22 0d 0a 20  ="WrongNetFx".. 
2610: 20 20 20 20 20 20 20 20 20 43 6f 6e 64 69 74 69           Conditi
2620: 6f 6e 3d 22 27 24 28 50 72 6f 6a 65 63 74 4e 61  on="'$(ProjectNa
2630: 6d 65 29 27 20 21 3d 20 27 27 22 3e 0d 0a 20 20  me)' != ''">..  
2640: 20 20 3c 57 61 72 6e 69 6e 67 20 54 65 78 74 3d    <Warning Text=
2650: 22 56 65 72 73 69 6f 6e 20 6d 69 73 6d 61 74 63  "Version mismatc
2660: 68 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46  h for the .NET F
2670: 72 61 6d 65 77 6f 72 6b 2c 20 73 6b 69 70 70 69  ramework, skippi
2680: 6e 67 20 70 72 6f 6a 65 63 74 20 26 71 75 6f 74  ng project &quot
2690: 3b 24 28 50 72 6f 6a 65 63 74 4e 61 6d 65 29 26  ;$(ProjectName)&
26a0: 71 75 6f 74 3b 2e 2e 2e 22 20 2f 3e 0d 0a 20 20  quot;..." />..  
26b0: 3c 2f 54 61 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c  </Target>....  <
26c0: 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  !--..  *********
26d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
26e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
26f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2700: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2710: 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a  *****..  -->....
2720: 20 20 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d 22    <Target Name="
2730: 4d 69 73 73 69 6e 67 56 73 53 64 6b 22 0d 0a 20  MissingVsSdk".. 
2740: 20 20 20 20 20 20 20 20 20 43 6f 6e 64 69 74 69           Conditi
2750: 6f 6e 3d 22 27 24 28 50 72 6f 6a 65 63 74 4e 61  on="'$(ProjectNa
2760: 6d 65 29 27 20 21 3d 20 27 27 22 3e 0d 0a 20 20  me)' != ''">..  
2770: 20 20 3c 57 61 72 6e 69 6e 67 20 54 65 78 74 3d    <Warning Text=
2780: 22 54 68 65 20 56 69 73 75 61 6c 20 53 74 75 64  "The Visual Stud
2790: 69 6f 20 53 44 4b 20 69 73 20 6d 69 73 73 69 6e  io SDK is missin
27a0: 67 2c 20 73 6b 69 70 70 69 6e 67 20 70 72 6f 6a  g, skipping proj
27b0: 65 63 74 20 26 71 75 6f 74 3b 24 28 50 72 6f 6a  ect &quot;$(Proj
27c0: 65 63 74 4e 61 6d 65 29 26 71 75 6f 74 3b 2e 2e  ectName)&quot;..
27d0: 2e 22 20 2f 3e 0d 0a 20 20 3c 2f 54 61 72 67 65  ." />..  </Targe
27e0: 74 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d 0a 20 20  t>....  <!--..  
27f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2800: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2810: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2820: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a  **************..
2840: 20 20 2d 2d 3e 0d 0a 0d 0a 20 20 3c 54 61 72 67    -->....  <Targ
2850: 65 74 20 4e 61 6d 65 3d 22 52 65 53 69 67 6e 4d  et Name="ReSignM
2860: 69 78 65 64 4d 6f 64 65 41 73 73 65 6d 62 6c 79  ixedModeAssembly
2870: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e  "..          Con
2880: 64 69 74 69 6f 6e 3d 22 27 24 28 52 65 53 69 67  dition="'$(ReSig
2890: 6e 4d 69 78 65 64 4d 6f 64 65 41 73 73 65 6d 62  nMixedModeAssemb
28a0: 6c 79 29 27 20 21 3d 20 27 66 61 6c 73 65 27 20  ly)' != 'false' 
28b0: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
28c0: 20 20 20 20 20 20 20 20 20 20 27 24 28 54 61 72            '$(Tar
28d0: 67 65 74 50 61 74 68 29 27 20 21 3d 20 27 27 20  getPath)' != '' 
28e0: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
28f0: 20 20 20 20 20 20 20 20 20 20 45 78 69 73 74 73            Exists
2900: 28 27 24 28 54 61 72 67 65 74 50 61 74 68 29 27  ('$(TargetPath)'
2910: 29 20 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  ) And..         
2920: 20 20 20 20 20 20 20 20 20 20 20 20 27 24 28 49              '$(I
2930: 4e 54 45 52 4f 50 5f 4b 45 59 5f 46 49 4c 45 29  NTEROP_KEY_FILE)
2940: 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20  ' != '' And..   
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2960: 20 20 45 78 69 73 74 73 28 27 24 28 49 4e 54 45    Exists('$(INTE
2970: 52 4f 50 5f 4b 45 59 5f 46 49 4c 45 29 27 29 22  ROP_KEY_FILE)')"
2980: 3e 0d 0a 20 20 20 20 3c 45 78 65 63 20 43 6f 6e  >..    <Exec Con
2990: 64 69 74 69 6f 6e 3d 22 27 24 28 54 61 72 67 65  dition="'$(Targe
29a0: 74 46 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f  tFrameworkSDKToo
29b0: 6c 73 44 69 72 65 63 74 6f 72 79 29 27 20 3d 3d  lsDirectory)' ==
29c0: 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20 20 20   '' And..       
29d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 24                '$
29e0: 28 46 72 61 6d 65 77 6f 72 6b 53 44 4b 44 69 72  (FrameworkSDKDir
29f0: 29 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20  )' != '' And..  
2a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a10: 20 20 20 45 78 69 73 74 73 28 27 24 28 46 72 61     Exists('$(Fra
2a20: 6d 65 77 6f 72 6b 53 44 4b 44 69 72 29 42 69 6e  meworkSDKDir)Bin
2a30: 5c 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20 20 20  \sn.exe')"..    
2a40: 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d 22 26        Command="&
2a50: 71 75 6f 74 3b 24 28 46 72 61 6d 65 77 6f 72 6b  quot;$(Framework
2a60: 53 44 4b 44 69 72 29 42 69 6e 5c 73 6e 2e 65 78  SDKDir)Bin\sn.ex
2a70: 65 26 71 75 6f 74 3b 20 2d 52 61 20 26 71 75 6f  e&quot; -Ra &quo
2a80: 74 3b 24 28 54 61 72 67 65 74 50 61 74 68 29 26  t;$(TargetPath)&
2a90: 71 75 6f 74 3b 20 26 71 75 6f 74 3b 24 28 49 4e  quot; &quot;$(IN
2aa0: 54 45 52 4f 50 5f 4b 45 59 5f 46 49 4c 45 29 26  TEROP_KEY_FILE)&
2ab0: 71 75 6f 74 3b 22 20 2f 3e 0d 0a 0d 0a 20 20 20  quot;" />....   
2ac0: 20 3c 45 78 65 63 20 43 6f 6e 64 69 74 69 6f 6e   <Exec Condition
2ad0: 3d 22 27 24 28 54 61 72 67 65 74 46 72 61 6d 65  ="'$(TargetFrame
2ae0: 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65  workSDKToolsDire
2af0: 63 74 6f 72 79 29 27 20 21 3d 20 27 27 20 41 6e  ctory)' != '' An
2b00: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
2b10: 20 20 20 20 20 20 20 20 45 78 69 73 74 73 28 27          Exists('
2b20: 24 28 54 61 72 67 65 74 46 72 61 6d 65 77 6f 72  $(TargetFramewor
2b30: 6b 53 44 4b 54 6f 6f 6c 73 44 69 72 65 63 74 6f  kSDKToolsDirecto
2b40: 72 79 29 73 6e 2e 65 78 65 27 29 22 0d 0a 20 20  ry)sn.exe')"..  
2b50: 20 20 20 20 20 20 20 20 43 6f 6d 6d 61 6e 64 3d          Command=
2b60: 22 26 71 75 6f 74 3b 24 28 54 61 72 67 65 74 46  "&quot;$(TargetF
2b70: 72 61 6d 65 77 6f 72 6b 53 44 4b 54 6f 6f 6c 73  rameworkSDKTools
2b80: 44 69 72 65 63 74 6f 72 79 29 73 6e 2e 65 78 65  Directory)sn.exe
2b90: 26 71 75 6f 74 3b 20 2d 52 61 20 26 71 75 6f 74  &quot; -Ra &quot
2ba0: 3b 24 28 54 61 72 67 65 74 50 61 74 68 29 26 71  ;$(TargetPath)&q
2bb0: 75 6f 74 3b 20 26 71 75 6f 74 3b 24 28 49 4e 54  uot; &quot;$(INT
2bc0: 45 52 4f 50 5f 4b 45 59 5f 46 49 4c 45 29 26 71  EROP_KEY_FILE)&q
2bd0: 75 6f 74 3b 22 20 2f 3e 0d 0a 20 20 3c 2f 54 61  uot;" />..  </Ta
2be0: 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d  rget>....  <!--.
2bf0: 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .  *************
2c00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2c10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2c20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2c30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2c40: 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a 20 20 3c 54  *..  -->....  <T
2c50: 61 72 67 65 74 20 4e 61 6d 65 3d 22 43 6f 70 79  arget Name="Copy
2c60: 49 6e 74 65 72 6f 70 41 73 73 65 6d 62 6c 79 22  InteropAssembly"
2c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e 64  ..          Cond
2c80: 69 74 69 6f 6e 3d 22 27 24 28 43 6f 70 79 49 6e  ition="'$(CopyIn
2c90: 74 65 72 6f 70 41 73 73 65 6d 62 6c 79 29 27 20  teropAssembly)' 
2ca0: 21 3d 20 27 66 61 6c 73 65 27 20 41 6e 64 0d 0a  != 'false' And..
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc0: 20 20 20 20 20 27 24 28 4f 75 74 44 69 72 29 27       '$(OutDir)'
2cd0: 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20   != '' And..    
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf0: 20 48 61 73 54 72 61 69 6c 69 6e 67 53 6c 61 73   HasTrailingSlas
2d00: 68 28 27 24 28 4f 75 74 44 69 72 29 27 29 20 41  h('$(OutDir)') A
2d10: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
2d20: 20 20 20 20 20 20 20 20 20 27 24 28 54 61 72 67           '$(Targ
2d30: 65 74 4e 61 6d 65 29 27 20 21 3d 20 27 27 20 41  etName)' != '' A
2d40: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
2d50: 20 20 20 20 20 20 20 20 20 27 24 28 42 61 73 65           '$(Base
2d60: 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 27 20  Configuration)' 
2d70: 21 3d 20 27 27 20 41 6e 64 0d 0a 20 20 20 20 20  != '' And..     
2d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d90: 27 24 28 50 6c 61 74 66 6f 72 6d 29 27 20 21 3d  '$(Platform)' !=
2da0: 20 27 27 22 3e 0d 0a 20 20 20 20 3c 45 78 65 63   ''">..    <Exec
2db0: 20 43 6f 6d 6d 61 6e 64 3d 22 58 43 4f 50 59 20   Command="XCOPY 
2dc0: 26 71 75 6f 74 3b 24 28 4f 75 74 44 69 72 29 24  &quot;$(OutDir)$
2dd0: 28 54 61 72 67 65 74 4e 61 6d 65 29 2e 2a 26 71  (TargetName).*&q
2de0: 75 6f 74 3b 20 26 71 75 6f 74 3b 24 28 4f 75 74  uot; &quot;$(Out
2df0: 44 69 72 29 2e 2e 5c 2e 2e 5c 24 28 42 61 73 65  Dir)..\..\$(Base
2e00: 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 5c 62  Configuration)\b
2e10: 69 6e 5c 24 28 50 6c 61 74 66 6f 72 6d 29 5c 26  in\$(Platform)\&
2e20: 71 75 6f 74 3b 20 2f 44 20 2f 45 20 2f 56 20 2f  quot; /D /E /V /
2e30: 49 20 2f 46 20 2f 48 20 2f 59 22 20 2f 3e 0d 0a  I /F /H /Y" />..
2e40: 0d 0a 20 20 20 20 3c 45 78 65 63 20 43 6f 6e 64  ..    <Exec Cond
2e50: 69 74 69 6f 6e 3d 22 27 24 28 44 6f 65 73 4d 61  ition="'$(DoesMa
2e60: 63 68 69 6e 65 4d 61 74 63 68 50 6c 61 74 66 6f  chineMatchPlatfo
2e70: 72 6d 29 27 20 21 3d 20 27 66 61 6c 73 65 27 22  rm)' != 'false'"
2e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6d 6d  ..          Comm
2e90: 61 6e 64 3d 22 58 43 4f 50 59 20 26 71 75 6f 74  and="XCOPY &quot
2ea0: 3b 24 28 4f 75 74 44 69 72 29 24 28 54 61 72 67  ;$(OutDir)$(Targ
2eb0: 65 74 4e 61 6d 65 29 2e 2a 26 71 75 6f 74 3b 20  etName).*&quot; 
2ec0: 26 71 75 6f 74 3b 24 28 4f 75 74 44 69 72 29 2e  &quot;$(OutDir).
2ed0: 2e 5c 2e 2e 5c 24 28 42 61 73 65 43 6f 6e 66 69  .\..\$(BaseConfi
2ee0: 67 75 72 61 74 69 6f 6e 29 5c 62 69 6e 5c 26 71  guration)\bin\&q
2ef0: 75 6f 74 3b 20 2f 44 20 2f 45 20 2f 56 20 2f 49  uot; /D /E /V /I
2f00: 20 2f 46 20 2f 48 20 2f 59 22 20 2f 3e 0d 0a 20   /F /H /Y" />.. 
2f10: 20 3c 2f 54 61 72 67 65 74 3e 0d 0a 0d 0a 20 20   </Target>....  
2f20: 3c 21 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a  <!--..  ********
2f30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2f40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2f50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2f60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2f70: 2a 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d  ******..  -->...
2f80: 0a 20 20 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d  .  <Target Name=
2f90: 22 44 65 74 65 63 74 42 75 69 6c 64 54 6f 6f 6c  "DetectBuildTool
2fa0: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 43 6f 6e  "..          Con
2fb0: 64 69 74 69 6f 6e 3d 22 27 24 28 44 65 74 65 63  dition="'$(Detec
2fc0: 74 42 75 69 6c 64 54 6f 6f 6c 29 27 20 21 3d 20  tBuildTool)' != 
2fd0: 27 66 61 6c 73 65 27 20 41 6e 64 0d 0a 20 20 20  'false' And..   
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff0: 20 20 27 24 28 4d 53 42 75 69 6c 64 42 69 6e 50    '$(MSBuildBinP
3000: 61 74 68 29 27 20 21 3d 20 27 27 20 41 6e 64 0d  ath)' != '' And.
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3020: 20 20 20 20 20 20 21 48 61 73 54 72 61 69 6c 69        !HasTraili
3030: 6e 67 53 6c 61 73 68 28 27 24 28 4d 53 42 75 69  ngSlash('$(MSBui
3040: 6c 64 42 69 6e 50 61 74 68 29 27 29 22 3e 0d 0a  ldBinPath)')">..
3050: 20 20 20 20 3c 43 72 65 61 74 65 50 72 6f 70 65      <CreatePrope
3060: 72 74 79 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 45  rty Condition="E
3070: 78 69 73 74 73 28 27 24 28 4d 53 42 75 69 6c 64  xists('$(MSBuild
3080: 42 69 6e 50 61 74 68 29 5c 4d 53 42 75 69 6c 64  BinPath)\MSBuild
3090: 2e 65 78 65 27 29 22 0d 0a 20 20 20 20 20 20 20  .exe')"..       
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 56 61 6c               Val
30b0: 75 65 3d 22 4d 53 42 75 69 6c 64 22 3e 0d 0a 20  ue="MSBuild">.. 
30c0: 20 20 20 20 20 3c 4f 75 74 70 75 74 20 54 61 73       <Output Tas
30d0: 6b 50 61 72 61 6d 65 74 65 72 3d 22 56 61 6c 75  kParameter="Valu
30e0: 65 22 20 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d  e" PropertyName=
30f0: 22 42 75 69 6c 64 54 6f 6f 6c 22 20 2f 3e 0d 0a  "BuildTool" />..
3100: 20 20 20 20 3c 2f 43 72 65 61 74 65 50 72 6f 70      </CreateProp
3110: 65 72 74 79 3e 0d 0a 0d 0a 20 20 20 20 3c 43 72  erty>....    <Cr
3120: 65 61 74 65 50 72 6f 70 65 72 74 79 20 43 6f 6e  eateProperty Con
3130: 64 69 74 69 6f 6e 3d 22 45 78 69 73 74 73 28 27  dition="Exists('
3140: 24 28 4d 53 42 75 69 6c 64 42 69 6e 50 61 74 68  $(MSBuildBinPath
3150: 29 5c 78 62 75 69 6c 64 2e 65 78 65 27 29 22 0d  )\xbuild.exe')".
3160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3170: 20 20 20 20 20 56 61 6c 75 65 3d 22 58 42 75 69       Value="XBui
3180: 6c 64 22 3e 0d 0a 20 20 20 20 20 20 3c 4f 75 74  ld">..      <Out
3190: 70 75 74 20 54 61 73 6b 50 61 72 61 6d 65 74 65  put TaskParamete
31a0: 72 3d 22 56 61 6c 75 65 22 20 50 72 6f 70 65 72  r="Value" Proper
31b0: 74 79 4e 61 6d 65 3d 22 42 75 69 6c 64 54 6f 6f  tyName="BuildToo
31c0: 6c 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43 72 65  l" />..    </Cre
31d0: 61 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a 0d 0a  ateProperty>....
31e0: 20 20 20 20 3c 43 72 65 61 74 65 50 72 6f 70 65      <CreatePrope
31f0: 72 74 79 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 45  rty Condition="E
3200: 78 69 73 74 73 28 27 24 28 4d 53 42 75 69 6c 64  xists('$(MSBuild
3210: 42 69 6e 50 61 74 68 29 5c 4d 53 42 75 69 6c 64  BinPath)\MSBuild
3220: 2e 64 6c 6c 27 29 22 0d 0a 20 20 20 20 20 20 20  .dll')"..       
3230: 20 20 20 20 20 20 20 20 20 20 20 20 20 56 61 6c               Val
3240: 75 65 3d 22 44 6f 74 4e 65 74 43 6f 72 65 22 3e  ue="DotNetCore">
3250: 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70 75 74 20  ..      <Output 
3260: 54 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22 56  TaskParameter="V
3270: 61 6c 75 65 22 20 50 72 6f 70 65 72 74 79 4e 61  alue" PropertyNa
3280: 6d 65 3d 22 42 75 69 6c 64 54 6f 6f 6c 22 20 2f  me="BuildTool" /
3290: 3e 0d 0a 20 20 20 20 3c 2f 43 72 65 61 74 65 50  >..    </CreateP
32a0: 72 6f 70 65 72 74 79 3e 0d 0a 0d 0a 20 20 20 20  roperty>....    
32b0: 3c 43 72 65 61 74 65 50 72 6f 70 65 72 74 79 20  <CreateProperty 
32c0: 43 6f 6e 64 69 74 69 6f 6e 3d 22 21 45 78 69 73  Condition="!Exis
32d0: 74 73 28 27 24 28 4d 53 42 75 69 6c 64 42 69 6e  ts('$(MSBuildBin
32e0: 50 61 74 68 29 5c 4d 53 42 75 69 6c 64 2e 65 78  Path)\MSBuild.ex
32f0: 65 27 29 20 41 6e 64 0d 0a 20 20 20 20 20 20 20  e') And..       
3300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3310: 20 20 20 20 20 20 20 20 21 45 78 69 73 74 73 28          !Exists(
3320: 27 24 28 4d 53 42 75 69 6c 64 42 69 6e 50 61 74  '$(MSBuildBinPat
3330: 68 29 5c 78 62 75 69 6c 64 2e 65 78 65 27 29 20  h)\xbuild.exe') 
3340: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3360: 20 20 20 20 21 45 78 69 73 74 73 28 27 24 28 4d      !Exists('$(M
3370: 53 42 75 69 6c 64 42 69 6e 50 61 74 68 29 5c 4d  SBuildBinPath)\M
3380: 53 42 75 69 6c 64 2e 64 6c 6c 27 29 22 0d 0a 20  SBuild.dll')".. 
3390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a0: 20 20 20 56 61 6c 75 65 3d 22 55 6e 6b 6e 6f 77     Value="Unknow
33b0: 6e 22 3e 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70  n">..      <Outp
33c0: 75 74 20 54 61 73 6b 50 61 72 61 6d 65 74 65 72  ut TaskParameter
33d0: 3d 22 56 61 6c 75 65 22 20 50 72 6f 70 65 72 74  ="Value" Propert
33e0: 79 4e 61 6d 65 3d 22 42 75 69 6c 64 54 6f 6f 6c  yName="BuildTool
33f0: 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43 72 65 61  " />..    </Crea
3400: 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a 20 20 3c  teProperty>..  <
3410: 2f 54 61 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21  /Target>....  <!
3420: 2d 2d 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  --..  **********
3430: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3440: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3450: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3460: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3470: 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a 20  ****..  -->.... 
3480: 20 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d 22 44   <Target Name="D
3490: 65 74 65 63 74 4f 70 65 72 61 74 69 6e 67 53 79  etectOperatingSy
34a0: 73 74 65 6d 22 0d 0a 20 20 20 20 20 20 20 20 20  stem"..         
34b0: 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 44   Condition="'$(D
34c0: 65 74 65 63 74 4f 70 65 72 61 74 69 6e 67 53 79  etectOperatingSy
34d0: 73 74 65 6d 29 27 20 21 3d 20 27 66 61 6c 73 65  stem)' != 'false
34e0: 27 22 3e 0d 0a 20 20 20 20 3c 43 72 65 61 74 65  '">..    <Create
34f0: 50 72 6f 70 65 72 74 79 20 43 6f 6e 64 69 74 69  Property Conditi
3500: 6f 6e 3d 22 27 24 28 4f 53 29 27 20 3d 3d 20 27  on="'$(OS)' == '
3510: 57 69 6e 64 6f 77 73 5f 4e 54 27 22 20 56 61 6c  Windows_NT'" Val
3520: 75 65 3d 22 57 69 6e 64 6f 77 73 22 3e 0d 0a 20  ue="Windows">.. 
3530: 20 20 20 20 20 3c 4f 75 74 70 75 74 20 54 61 73       <Output Tas
3540: 6b 50 61 72 61 6d 65 74 65 72 3d 22 56 61 6c 75  kParameter="Valu
3550: 65 22 20 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d  e" PropertyName=
3560: 22 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d  "OperatingSystem
3570: 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43 72 65 61  " />..    </Crea
3580: 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a 0d 0a 20  teProperty>.... 
3590: 20 20 20 3c 43 72 65 61 74 65 50 72 6f 70 65 72     <CreateProper
35a0: 74 79 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24  ty Condition="'$
35b0: 28 4f 53 29 27 20 3d 3d 20 27 55 6e 69 78 27 22  (OS)' == 'Unix'"
35c0: 20 56 61 6c 75 65 3d 22 55 6e 69 78 22 3e 0d 0a   Value="Unix">..
35d0: 20 20 20 20 20 20 3c 4f 75 74 70 75 74 20 54 61        <Output Ta
35e0: 73 6b 50 61 72 61 6d 65 74 65 72 3d 22 56 61 6c  skParameter="Val
35f0: 75 65 22 20 50 72 6f 70 65 72 74 79 4e 61 6d 65  ue" PropertyName
3600: 3d 22 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65  ="OperatingSyste
3610: 6d 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43 72 65  m" />..    </Cre
3620: 61 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a 0d 0a  ateProperty>....
3630: 20 20 20 20 3c 43 72 65 61 74 65 50 72 6f 70 65      <CreatePrope
3640: 72 74 79 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27  rty Condition="'
3650: 24 28 4f 53 29 27 20 3d 3d 20 27 4f 53 58 27 22  $(OS)' == 'OSX'"
3660: 20 56 61 6c 75 65 3d 22 4d 61 63 4f 53 58 22 3e   Value="MacOSX">
3670: 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70 75 74 20  ..      <Output 
3680: 54 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22 56  TaskParameter="V
3690: 61 6c 75 65 22 20 50 72 6f 70 65 72 74 79 4e 61  alue" PropertyNa
36a0: 6d 65 3d 22 4f 70 65 72 61 74 69 6e 67 53 79 73  me="OperatingSys
36b0: 74 65 6d 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43  tem" />..    </C
36c0: 72 65 61 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a  reateProperty>..
36d0: 0d 0a 20 20 20 20 3c 43 72 65 61 74 65 50 72 6f  ..    <CreatePro
36e0: 70 65 72 74 79 20 43 6f 6e 64 69 74 69 6f 6e 3d  perty Condition=
36f0: 22 27 24 28 4f 53 29 27 20 21 3d 20 27 57 69 6e  "'$(OS)' != 'Win
3700: 64 6f 77 73 5f 4e 54 27 20 41 6e 64 0d 0a 20 20  dows_NT' And..  
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 27 24 28               '$(
3730: 4f 53 29 27 20 21 3d 20 27 55 6e 69 78 27 20 41  OS)' != 'Unix' A
3740: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nd..            
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3760: 20 20 20 27 24 28 4f 53 29 27 20 21 3d 20 27 4f     '$(OS)' != 'O
3770: 53 58 27 22 0d 0a 20 20 20 20 20 20 20 20 20 20  SX'"..          
3780: 20 20 20 20 20 20 20 20 20 20 56 61 6c 75 65 3d            Value=
3790: 22 55 6e 6b 6e 6f 77 6e 22 3e 0d 0a 20 20 20 20  "Unknown">..    
37a0: 20 20 3c 4f 75 74 70 75 74 20 54 61 73 6b 50 61    <Output TaskPa
37b0: 72 61 6d 65 74 65 72 3d 22 56 61 6c 75 65 22 20  rameter="Value" 
37c0: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 22 4f 70  PropertyName="Op
37d0: 65 72 61 74 69 6e 67 53 79 73 74 65 6d 22 20 2f  eratingSystem" /
37e0: 3e 0d 0a 20 20 20 20 3c 2f 43 72 65 61 74 65 50  >..    </CreateP
37f0: 72 6f 70 65 72 74 79 3e 0d 0a 20 20 3c 2f 54 61  roperty>..  </Ta
3800: 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d 0d  rget>....  <!--.
3810: 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .  *************
3820: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3840: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3850: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3860: 2a 0d 0a 20 20 2a 2a 20 20 20 20 20 20 20 20 20  *..  **         
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56                 V
3880: 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 31  isual Studio 201
3890: 37 20 54 61 72 67 65 74 73 20 20 20 20 20 20 20  7 Targets       
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38b0: 20 2a 2a 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a   **..  *********
38c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
38d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
38e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
38f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3900: 2a 2a 2a 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a  *****..  -->....
3910: 20 20 3c 54 61 72 67 65 74 20 4e 61 6d 65 3d 22    <Target Name="
3920: 4d 61 79 62 65 46 69 6e 64 56 73 53 64 6b 32 30  MaybeFindVsSdk20
3930: 31 37 22 0d 0a 20 20 20 20 20 20 20 20 20 20 43  17"..          C
3940: 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 4d 61 79  ondition="'$(May
3950: 62 65 46 69 6e 64 56 73 53 64 6b 32 30 31 37 29  beFindVsSdk2017)
3960: 27 20 21 3d 20 27 66 61 6c 73 65 27 20 41 6e 64  ' != 'false' And
3970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3980: 20 20 20 20 20 20 20 27 24 28 4d 53 42 75 69 6c         '$(MSBuil
3990: 64 50 72 6f 6a 65 63 74 44 69 72 65 63 74 6f 72  dProjectDirector
39a0: 79 29 27 20 21 3d 20 27 27 20 41 6e 64 0d 0a 20  y)' != '' And.. 
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39c0: 20 20 20 20 21 48 61 73 54 72 61 69 6c 69 6e 67      !HasTrailing
39d0: 53 6c 61 73 68 28 27 24 28 4d 53 42 75 69 6c 64  Slash('$(MSBuild
39e0: 50 72 6f 6a 65 63 74 44 69 72 65 63 74 6f 72 79  ProjectDirectory
39f0: 29 27 29 20 41 6e 64 0d 0a 20 20 20 20 20 20 20  )') And..       
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 78                Ex
3a10: 69 73 74 73 28 27 24 28 4d 53 42 75 69 6c 64 50  ists('$(MSBuildP
3a20: 72 6f 6a 65 63 74 44 69 72 65 63 74 6f 72 79 29  rojectDirectory)
3a30: 5c 2e 2e 5c 45 78 74 65 72 6e 61 6c 73 5c 76 73  \..\Externals\vs
3a40: 77 68 65 72 65 5c 76 73 77 68 65 72 65 2e 65 78  where\vswhere.ex
3a50: 65 27 29 22 3e 0d 0a 20 20 20 20 3c 21 2d 2d 0d  e')">..    <!--.
3a60: 0a 20 20 20 20 20 20 20 20 48 41 43 4b 3a 20 55  .        HACK: U
3a70: 73 65 20 61 20 63 6f 75 70 6c 65 20 75 6e 64 6f  se a couple undo
3a80: 63 75 6d 65 6e 74 65 64 20 70 72 6f 70 65 72 74  cumented propert
3a90: 69 65 73 20 6f 66 20 74 68 65 20 45 78 65 63 20  ies of the Exec 
3aa0: 74 61 73 6b 20 69 6e 20 6f 72 64 65 72 0d 0a 20  task in order.. 
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20               to 
3ac0: 63 61 70 74 75 72 65 20 74 68 65 20 63 6f 6e 73  capture the cons
3ad0: 6f 6c 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68  ole output of th
3ae0: 65 20 22 76 73 77 68 65 72 65 22 20 63 6f 6d 6d  e "vswhere" comm
3af0: 61 6e 64 2e 20 20 54 68 69 73 0d 0a 20 20 20 20  and.  This..    
3b00: 20 20 20 20 20 20 20 20 20 20 69 73 20 6e 65 65            is nee
3b10: 64 65 64 20 74 6f 20 6c 6f 63 61 74 65 20 74 68  ded to locate th
3b20: 65 20 53 44 4b 20 66 6f 72 20 56 69 73 75 61 6c  e SDK for Visual
3b30: 20 53 74 75 64 69 6f 20 32 30 31 37 2e 20 20 46   Studio 2017.  F
3b40: 6f 72 20 6d 6f 72 65 0d 0a 20 20 20 20 20 20 20  or more..       
3b50: 20 20 20 20 20 20 20 69 6e 66 6f 72 6d 61 74 69         informati
3b60: 6f 6e 2c 20 73 65 65 3a 0d 0a 0d 0a 20 20 20 20  on, see:....    
3b70: 20 20 20 20 20 20 20 20 20 20 68 74 74 70 73 3a            https:
3b80: 2f 2f 73 74 61 63 6b 6f 76 65 72 66 6c 6f 77 2e  //stackoverflow.
3b90: 63 6f 6d 2f 71 75 65 73 74 69 6f 6e 73 2f 38 39  com/questions/89
3ba0: 33 38 36 37 39 0d 0a 20 20 20 20 2d 2d 3e 0d 0a  38679..    -->..
3bb0: 20 20 20 20 3c 45 78 65 63 20 43 6f 6e 73 6f 6c      <Exec Consol
3bc0: 65 54 6f 4d 53 42 75 69 6c 64 3d 22 74 72 75 65  eToMSBuild="true
3bd0: 22 20 43 6f 6d 6d 61 6e 64 3d 22 26 71 75 6f 74  " Command="&quot
3be0: 3b 24 28 4d 53 42 75 69 6c 64 50 72 6f 6a 65 63  ;$(MSBuildProjec
3bf0: 74 44 69 72 65 63 74 6f 72 79 29 5c 2e 2e 5c 45  tDirectory)\..\E
3c00: 78 74 65 72 6e 61 6c 73 5c 76 73 77 68 65 72 65  xternals\vswhere
3c10: 5c 76 73 77 68 65 72 65 2e 65 78 65 26 71 75 6f  \vswhere.exe&quo
3c20: 74 3b 20 2d 76 65 72 73 69 6f 6e 20 31 35 2e 30  t; -version 15.0
3c30: 20 2d 70 72 6f 64 75 63 74 73 20 2a 20 2d 72 65   -products * -re
3c40: 71 75 69 72 65 73 20 4d 69 63 72 6f 73 6f 66 74  quires Microsoft
3c50: 2e 56 69 73 75 61 6c 53 74 75 64 69 6f 2e 43 6f  .VisualStudio.Co
3c60: 6d 70 6f 6e 65 6e 74 2e 56 53 53 44 4b 20 2d 70  mponent.VSSDK -p
3c70: 72 6f 70 65 72 74 79 20 69 6e 73 74 61 6c 6c 61  roperty installa
3c80: 74 69 6f 6e 50 61 74 68 22 0d 0a 20 20 20 20 20  tionPath"..     
3c90: 20 20 20 20 20 57 6f 72 6b 69 6e 67 44 69 72 65       WorkingDire
3ca0: 63 74 6f 72 79 3d 22 24 28 4d 53 42 75 69 6c 64  ctory="$(MSBuild
3cb0: 50 72 6f 6a 65 63 74 44 69 72 65 63 74 6f 72 79  ProjectDirectory
3cc0: 29 5c 2e 2e 5c 45 78 74 65 72 6e 61 6c 73 5c 76  )\..\Externals\v
3cd0: 73 77 68 65 72 65 22 3e 0d 0a 20 20 20 20 20 20  swhere">..      
3ce0: 3c 4f 75 74 70 75 74 20 54 61 73 6b 50 61 72 61  <Output TaskPara
3cf0: 6d 65 74 65 72 3d 22 43 6f 6e 73 6f 6c 65 4f 75  meter="ConsoleOu
3d00: 74 70 75 74 22 20 50 72 6f 70 65 72 74 79 4e 61  tput" PropertyNa
3d10: 6d 65 3d 22 56 53 31 35 30 49 4e 53 54 41 4c 4c  me="VS150INSTALL
3d20: 41 54 49 4f 4e 50 41 54 48 22 20 2f 3e 0d 0a 20  ATIONPATH" />.. 
3d30: 20 20 20 3c 2f 45 78 65 63 3e 0d 0a 0d 0a 20 20     </Exec>....  
3d40: 20 20 3c 43 72 65 61 74 65 50 72 6f 70 65 72 74    <CreatePropert
3d50: 79 20 43 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28  y Condition="'$(
3d60: 56 53 31 35 30 49 4e 53 54 41 4c 4c 41 54 49 4f  VS150INSTALLATIO
3d70: 4e 50 41 54 48 29 27 20 21 3d 20 27 27 20 41 6e  NPATH)' != '' An
3d80: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
3d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3da0: 20 20 21 48 61 73 54 72 61 69 6c 69 6e 67 53 6c    !HasTrailingSl
3db0: 61 73 68 28 27 24 28 56 53 31 35 30 49 4e 53 54  ash('$(VS150INST
3dc0: 41 4c 4c 41 54 49 4f 4e 50 41 54 48 29 27 29 20  ALLATIONPATH)') 
3dd0: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3df0: 20 20 20 20 45 78 69 73 74 73 28 27 24 28 56 53      Exists('$(VS
3e00: 31 35 30 49 4e 53 54 41 4c 4c 41 54 49 4f 4e 50  150INSTALLATIONP
3e10: 41 54 48 29 5c 56 53 53 44 4b 27 29 22 0d 0a 20  ATH)\VSSDK')".. 
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e30: 20 20 20 56 61 6c 75 65 3d 22 24 28 56 53 31 35     Value="$(VS15
3e40: 30 49 4e 53 54 41 4c 4c 41 54 49 4f 4e 50 41 54  0INSTALLATIONPAT
3e50: 48 29 5c 56 53 53 44 4b 5c 22 3e 0d 0a 20 20 20  H)\VSSDK\">..   
3e60: 20 20 20 3c 4f 75 74 70 75 74 20 54 61 73 6b 50     <Output TaskP
3e70: 61 72 61 6d 65 74 65 72 3d 22 56 61 6c 75 65 22  arameter="Value"
3e80: 20 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 22 56   PropertyName="V
3e90: 53 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c 22 20  SSDK150Install" 
3ea0: 2f 3e 0d 0a 20 20 20 20 3c 2f 43 72 65 61 74 65  />..    </Create
3eb0: 50 72 6f 70 65 72 74 79 3e 0d 0a 20 20 3c 2f 54  Property>..  </T
3ec0: 61 72 67 65 74 3e 0d 0a 0d 0a 20 20 3c 21 2d 2d  arget>....  <!--
3ed0: 0d 0a 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..  ************
3ee0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3ef0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3f00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3f10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
3f20: 2a 2a 0d 0a 20 20 2d 2d 3e 0d 0a 0d 0a 20 20 3c  **..  -->....  <
3f30: 54 61 72 67 65 74 20 4e 61 6d 65 3d 22 4d 61 79  Target Name="May
3f40: 62 65 4d 69 73 73 69 6e 67 56 73 53 64 6b 32 30  beMissingVsSdk20
3f50: 31 37 22 0d 0a 20 20 20 20 20 20 20 20 20 20 43  17"..          C
3f60: 6f 6e 64 69 74 69 6f 6e 3d 22 27 24 28 4d 61 79  ondition="'$(May
3f70: 62 65 4d 69 73 73 69 6e 67 56 73 53 64 6b 32 30  beMissingVsSdk20
3f80: 31 37 29 27 20 21 3d 20 27 66 61 6c 73 65 27 20  17)' != 'false' 
3f90: 41 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  And..           
3fa0: 20 20 20 20 20 20 20 20 20 20 28 27 24 28 56 53            ('$(VS
3fb0: 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c 29 27 20  SDK150Install)' 
3fc0: 3d 3d 20 27 27 20 4f 72 0d 0a 20 20 20 20 20 20  == '' Or..      
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fe0: 21 45 78 69 73 74 73 28 27 24 28 56 53 53 44 4b  !Exists('$(VSSDK
3ff0: 31 35 30 49 6e 73 74 61 6c 6c 29 56 69 73 75 61  150Install)Visua
4000: 6c 53 74 75 64 69 6f 49 6e 74 65 67 72 61 74 69  lStudioIntegrati
4010: 6f 6e 5c 43 6f 6d 6d 6f 6e 5c 41 73 73 65 6d 62  on\Common\Assemb
4020: 6c 69 65 73 5c 76 34 2e 30 5c 4d 69 63 72 6f 73  lies\v4.0\Micros
4030: 6f 66 74 2e 44 61 74 61 2e 43 6f 6e 6e 65 63 74  oft.Data.Connect
4040: 69 6f 6e 55 49 2e 64 6c 6c 27 29 20 4f 72 0d 0a  ionUI.dll') Or..
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4060: 20 20 20 20 20 20 21 45 78 69 73 74 73 28 27 24        !Exists('$
4070: 28 56 53 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c  (VSSDK150Install
4080: 29 56 69 73 75 61 6c 53 74 75 64 69 6f 49 6e 74  )VisualStudioInt
4090: 65 67 72 61 74 69 6f 6e 5c 43 6f 6d 6d 6f 6e 5c  egration\Common\
40a0: 41 73 73 65 6d 62 6c 69 65 73 5c 76 34 2e 30 5c  Assemblies\v4.0\
40b0: 4d 69 63 72 6f 73 6f 66 74 2e 56 69 73 75 61 6c  Microsoft.Visual
40c0: 53 74 75 64 69 6f 2e 44 61 74 61 2e 64 6c 6c 27  Studio.Data.dll'
40d0: 29 20 4f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ) Or..          
40e0: 20 20 20 20 20 20 20 20 20 20 20 20 21 45 78 69              !Exi
40f0: 73 74 73 28 27 24 28 56 53 53 44 4b 31 35 30 49  sts('$(VSSDK150I
4100: 6e 73 74 61 6c 6c 29 56 69 73 75 61 6c 53 74 75  nstall)VisualStu
4110: 64 69 6f 49 6e 74 65 67 72 61 74 69 6f 6e 5c 43  dioIntegration\C
4120: 6f 6d 6d 6f 6e 5c 41 73 73 65 6d 62 6c 69 65 73  ommon\Assemblies
4130: 5c 76 34 2e 30 5c 4d 69 63 72 6f 73 6f 66 74 2e  \v4.0\Microsoft.
4140: 56 69 73 75 61 6c 53 74 75 64 69 6f 2e 44 61 74  VisualStudio.Dat
4150: 61 2e 53 65 72 76 69 63 65 73 2e 64 6c 6c 27 29  a.Services.dll')
4160: 20 4f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20   Or..           
4170: 20 20 20 20 20 20 20 20 20 20 20 21 45 78 69 73             !Exis
4180: 74 73 28 27 24 28 56 53 53 44 4b 31 35 30 49 6e  ts('$(VSSDK150In
4190: 73 74 61 6c 6c 29 56 69 73 75 61 6c 53 74 75 64  stall)VisualStud
41a0: 69 6f 49 6e 74 65 67 72 61 74 69 6f 6e 5c 43 6f  ioIntegration\Co
41b0: 6d 6d 6f 6e 5c 41 73 73 65 6d 62 6c 69 65 73 5c  mmon\Assemblies\
41c0: 76 32 2e 30 5c 4d 69 63 72 6f 73 6f 66 74 2e 56  v2.0\Microsoft.V
41d0: 69 73 75 61 6c 53 74 75 64 69 6f 2e 4f 4c 45 2e  isualStudio.OLE.
41e0: 49 6e 74 65 72 6f 70 2e 64 6c 6c 27 29 20 4f 72  Interop.dll') Or
41f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4200: 20 20 20 20 20 20 20 20 21 45 78 69 73 74 73 28          !Exists(
4210: 27 24 28 56 53 53 44 4b 31 35 30 49 6e 73 74 61  '$(VSSDK150Insta
4220: 6c 6c 29 56 69 73 75 61 6c 53 74 75 64 69 6f 49  ll)VisualStudioI
4230: 6e 74 65 67 72 61 74 69 6f 6e 5c 43 6f 6d 6d 6f  ntegration\Commo
4240: 6e 5c 41 73 73 65 6d 62 6c 69 65 73 5c 76 34 2e  n\Assemblies\v4.
4250: 30 5c 4d 69 63 72 6f 73 6f 66 74 2e 56 69 73 75  0\Microsoft.Visu
4260: 61 6c 53 74 75 64 69 6f 2e 53 68 65 6c 6c 2e 31  alStudio.Shell.1
4270: 35 2e 30 2e 64 6c 6c 27 29 20 4f 72 0d 0a 20 20  5.0.dll') Or..  
4280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4290: 20 20 20 20 21 45 78 69 73 74 73 28 27 24 28 56      !Exists('$(V
42a0: 53 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c 29 56  SSDK150Install)V
42b0: 69 73 75 61 6c 53 74 75 64 69 6f 49 6e 74 65 67  isualStudioInteg
42c0: 72 61 74 69 6f 6e 5c 43 6f 6d 6d 6f 6e 5c 41 73  ration\Common\As
42d0: 73 65 6d 62 6c 69 65 73 5c 76 32 2e 30 5c 4d 69  semblies\v2.0\Mi
42e0: 63 72 6f 73 6f 66 74 2e 56 69 73 75 61 6c 53 74  crosoft.VisualSt
42f0: 75 64 69 6f 2e 53 68 65 6c 6c 2e 49 6e 74 65 72  udio.Shell.Inter
4300: 6f 70 2e 64 6c 6c 27 29 20 4f 72 0d 0a 20 20 20  op.dll') Or..   
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4320: 20 20 20 21 45 78 69 73 74 73 28 27 24 28 56 53     !Exists('$(VS
4330: 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c 29 56 69  SDK150Install)Vi
4340: 73 75 61 6c 53 74 75 64 69 6f 49 6e 74 65 67 72  sualStudioIntegr
4350: 61 74 69 6f 6e 5c 43 6f 6d 6d 6f 6e 5c 41 73 73  ation\Common\Ass
4360: 65 6d 62 6c 69 65 73 5c 76 32 2e 30 5c 4d 69 63  emblies\v2.0\Mic
4370: 72 6f 73 6f 66 74 2e 56 69 73 75 61 6c 53 74 75  rosoft.VisualStu
4380: 64 69 6f 2e 53 68 65 6c 6c 2e 49 6e 74 65 72 6f  dio.Shell.Intero
4390: 70 2e 38 2e 30 2e 64 6c 6c 27 29 20 4f 72 0d 0a  p.8.0.dll') Or..
43a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43b0: 20 20 20 20 20 20 21 45 78 69 73 74 73 28 27 24        !Exists('$
43c0: 28 56 53 53 44 4b 31 35 30 49 6e 73 74 61 6c 6c  (VSSDK150Install
43d0: 29 56 69 73 75 61 6c 53 74 75 64 69 6f 49 6e 74  )VisualStudioInt
43e0: 65 67 72 61 74 69 6f 6e 5c 43 6f 6d 6d 6f 6e 5c  egration\Common\
43f0: 41 73 73 65 6d 62 6c 69 65 73 5c 76 32 2e 30 5c  Assemblies\v2.0\
4400: 4d 69 63 72 6f 73 6f 66 74 2e 56 69 73 75 61 6c  Microsoft.Visual
4410: 53 74 75 64 69 6f 2e 53 68 65 6c 6c 2e 49 6e 74  Studio.Shell.Int
4420: 65 72 6f 70 2e 39 2e 30 2e 64 6c 6c 27 29 20 4f  erop.9.0.dll') O
4430: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
4440: 20 20 20 20 20 20 20 20 20 21 45 78 69 73 74 73           !Exists
4450: 28 27 24 28 56 53 53 44 4b 31 35 30 49 6e 73 74  ('$(VSSDK150Inst
4460: 61 6c 6c 29 56 69 73 75 61 6c 53 74 75 64 69 6f  all)VisualStudio
4470: 49 6e 74 65 67 72 61 74 69 6f 6e 5c 43 6f 6d 6d  Integration\Comm
4480: 6f 6e 5c 41 73 73 65 6d 62 6c 69 65 73 5c 76 32  on\Assemblies\v2
4490: 2e 30 5c 4d 69 63 72 6f 73 6f 66 74 2e 56 69 73  .0\Microsoft.Vis
44a0: 75 61 6c 53 74 75 64 69 6f 2e 53 68 65 6c 6c 2e  ualStudio.Shell.
44b0: 49 6e 74 65 72 6f 70 2e 31 30 2e 30 2e 64 6c 6c  Interop.10.0.dll
44c0: 27 29 20 4f 72 0d 0a 20 20 20 20 20 20 20 20 20  ') Or..         
44d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 21 45 78               !Ex
44e0: 69 73 74 73 28 27 24 28 56 53 53 44 4b 31 35 30  ists('$(VSSDK150
44f0: 49 6e 73 74 61 6c 6c 29 56 69 73 75 61 6c 53 74  Install)VisualSt
4500: 75 64 69 6f 49 6e 74 65 67 72 61 74 69 6f 6e 5c  udioIntegration\
4510: 43 6f 6d 6d 6f 6e 5c 41 73 73 65 6d 62 6c 69 65  Common\Assemblie
4520: 73 5c 76 34 2e 30 5c 4d 69 63 72 6f 73 6f 66 74  s\v4.0\Microsoft
4530: 2e 56 69 73 75 61 6c 53 74 75 64 69 6f 2e 53 68  .VisualStudio.Sh
4540: 65 6c 6c 2e 49 6e 74 65 72 6f 70 2e 31 35 2e 33  ell.Interop.15.3
4550: 2e 44 65 73 69 67 6e 54 69 6d 65 2e 64 6c 6c 27  .DesignTime.dll'
4560: 29 29 22 3e 0d 0a 20 20 20 20 3c 21 2d 2d 0d 0a  ))">..    <!--..
4570: 20 20 20 20 20 20 20 20 4e 4f 54 45 3a 20 57 65          NOTE: We
4580: 20 63 61 6e 6e 6f 74 20 62 75 69 6c 64 20 74 68   cannot build th
4590: 69 73 20 70 72 6f 6a 65 63 74 20 77 69 74 68 6f  is project witho
45a0: 75 74 20 74 68 65 20 6e 65 63 65 73 73 61 72 79  ut the necessary
45b0: 20 72 65 66 65 72 65 6e 63 65 0d 0a 20 20 20 20   reference..    
45c0: 20 20 20 20 20 20 20 20 20 20 61 73 73 65 6d 62            assemb
45d0: 6c 69 65 73 3b 20 74 68 65 72 65 66 6f 72 65 2c  lies; therefore,
45e0: 20 73 6b 69 70 20 62 75 69 6c 64 69 6e 67 20 69   skip building i
45f0: 74 20 61 6c 74 6f 67 65 74 68 65 72 2e 0d 0a 20  t altogether... 
4600: 20 20 20 2d 2d 3e 0d 0a 20 20 20 20 3c 43 72 65     -->..    <Cre
4610: 61 74 65 50 72 6f 70 65 72 74 79 20 56 61 6c 75  ateProperty Valu
4620: 65 3d 22 4d 69 73 73 69 6e 67 56 73 53 64 6b 22  e="MissingVsSdk"
4630: 3e 0d 0a 20 20 20 20 20 20 3c 4f 75 74 70 75 74  >..      <Output
4640: 20 54 61 73 6b 50 61 72 61 6d 65 74 65 72 3d 22   TaskParameter="
4650: 56 61 6c 75 65 22 20 50 72 6f 70 65 72 74 79 4e  Value" PropertyN
4660: 61 6d 65 3d 22 42 75 69 6c 64 44 65 70 65 6e 64  ame="BuildDepend
4670: 73 4f 6e 22 20 2f 3e 0d 0a 20 20 20 20 3c 2f 43  sOn" />..    </C
4680: 72 65 61 74 65 50 72 6f 70 65 72 74 79 3e 0d 0a  reateProperty>..
4690: 20 20 3c 2f 54 61 72 67 65 74 3e 0d 0a 3c 2f 50    </Target>..</P
46a0: 72 6f 6a 65 63 74 3e 0d 0a                       roject>..