[Tizen] Add BuildTools 2.1.0-rc1-02804-05
[platform/upstream/coreclr.git] / Tools / dotnetcli / sdk / 2.1.2 / Sdks / Microsoft.NET.Sdk / build / Microsoft.PackageDependencyResolution.targets
1 <!--
2 ***********************************************************************************************
3 Microsoft.PackageDependencyResolution.targets
4
5 WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
6           created a backup copy.  Incorrect changes to this file will make it
7           impossible to load or build your projects from the command-line or the IDE.
8
9 Copyright (c) .NET Foundation. All rights reserved. 
10 ***********************************************************************************************
11 -->
12 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13
14   <!--
15     *************************************
16     1. INPUT PROPERTIES
17     - That configure the PackageDependency targets
18     *************************************
19     -->
20
21   <!-- General Properties -->
22   <PropertyGroup>
23     <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
24   </PropertyGroup>
25
26   <!-- Project Assets File -->
27   <PropertyGroup>
28     <ProjectAssetsFile Condition="'$(ProjectAssetsFile)' == ''">$(BaseIntermediateOutputPath)/project.assets.json</ProjectAssetsFile>
29   </PropertyGroup>
30
31   <PropertyGroup>
32     <!-- Ensure $(ProjectAssetsFile) is a full path -->
33     <ProjectAssetsFile Condition="'$([System.IO.Path]::IsPathRooted($(ProjectAssetsFile)))' != 'true'">$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(ProjectAssetsFile)'))))</ProjectAssetsFile>
34   </PropertyGroup>
35
36   <PropertyGroup>
37     <ResolvePackageDependenciesForBuild Condition="'$(ResolvePackageDependenciesForBuild)' == ''">true</ResolvePackageDependenciesForBuild>
38     <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == ''">true</CopyLocalLockFileAssemblies>
39
40     <ContentPreprocessorOutputDirectory Condition="'$(ContentPreprocessorOutputDirectory)' == ''">$(IntermediateOutputPath)NuGet\</ContentPreprocessorOutputDirectory>
41     <ProduceOnlyPreprocessorFilesInBuildTask Condition="'$(ProduceOnlyPreprocessorFilesInBuildTask)' == ''">true</ProduceOnlyPreprocessorFilesInBuildTask>
42
43     <UseTargetPlatformAsNuGetTargetMoniker Condition="'$(UseTargetPlatformAsNuGetTargetMoniker)' == '' AND '$(TargetFrameworkMoniker)' == '.NETCore,Version=v5.0'">true</UseTargetPlatformAsNuGetTargetMoniker>
44     <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' == 'true'">$(TargetPlatformIdentifier),Version=v$([System.Version]::Parse('$(TargetPlatformMinVersion)').ToString(3))</NuGetTargetMoniker>
45     <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' != 'true'">$(TargetFrameworkMoniker)</NuGetTargetMoniker>
46
47     <EmitAssetsLogMessages Condition="'$(EmitAssetsLogMessages)' == ''">true</EmitAssetsLogMessages>
48   </PropertyGroup>
49
50   <!-- Target Moniker + RID-->
51   <PropertyGroup Condition="'$(_NugetTargetMonikerAndRID)' == ''">
52     <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' == ''">$(NuGetTargetMoniker)</_NugetTargetMonikerAndRID>
53     <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' != ''">$(NuGetTargetMoniker)/$(RuntimeIdentifier)</_NugetTargetMonikerAndRID>
54   </PropertyGroup>
55
56   <!--
57     *************************************
58     2. EXTERNAL PROPERTIES and ITEMS
59     - Override or add to external targets
60     *************************************
61     -->
62
63   <PropertyGroup>
64     <ResolveAssemblyReferencesDependsOn>
65       $(ResolveAssemblyReferencesDependsOn);
66       ResolvePackageDependenciesForBuild;
67       _HandlePackageFileConflicts;
68     </ResolveAssemblyReferencesDependsOn>
69
70     <PrepareResourcesDependsOn>
71       ResolvePackageDependenciesForBuild;
72       _HandlePackageFileConflicts;
73       $(PrepareResourcesDependsOn)
74     </PrepareResourcesDependsOn>
75   </PropertyGroup>
76
77   <!-- List of targets that emit Dependency DiagnosticMessages items -->
78   <PropertyGroup>
79     <EmitsDependencyDiagnosticMessages>
80       RunResolvePackageDependencies;
81       $(EmitsDependencyDiagnosticMessages)
82     </EmitsDependencyDiagnosticMessages>
83   </PropertyGroup>
84
85   <!-- Common tokens used in preprocessed content files -->
86   <ItemGroup>
87     <PreprocessorValue Include="rootnamespace">
88       <Value>$(RootNamespace)</Value>
89     </PreprocessorValue>
90     <PreprocessorValue Include="assemblyname">
91       <Value>$(AssemblyName)</Value>
92     </PreprocessorValue>
93     <PreprocessorValue Include="fullpath">
94       <Value>$(MSBuildProjectDirectory)</Value>
95     </PreprocessorValue>
96     <PreprocessorValue Include="outputfilename">
97       <Value>$(TargetFileName)</Value>
98     </PreprocessorValue>
99     <PreprocessorValue Include="filename">
100       <Value>$(MSBuildProjectFile)</Value>
101     </PreprocessorValue>
102     <PreprocessorValue Include="@(NuGetPreprocessorValue)" Exclude="@(PreprocessorValue)" />
103   </ItemGroup>
104
105   <!--
106     *************************************
107     3. BUILD TARGETS
108     - Override the Depends-On properties, or the individual targets
109     *************************************
110     -->
111
112   <!--
113     ============================================================
114                      ResolvePackageDependenciesForBuild
115
116     Populate items for build. This is triggered before target 
117     "AssignProjectConfiguration" to ensure ProjectReference items
118     are populated before ResolveProjectReferences is run.
119     ============================================================
120     -->
121   <PropertyGroup>
122     <ResolvePackageDependenciesForBuildDependsOn>
123       ResolveLockFileReferences;
124       ResolveLockFileAnalyzers;
125       ResolveLockFileCopyLocalProjectDeps;
126       IncludeTransitiveProjectReferences
127     </ResolvePackageDependenciesForBuildDependsOn>
128   </PropertyGroup>
129   <Target Name="ResolvePackageDependenciesForBuild"
130           Condition="'$(ResolvePackageDependenciesForBuild)' == 'true' and Exists('$(ProjectAssetsFile)')"
131           BeforeTargets="AssignProjectConfiguration"
132           DependsOnTargets="$(ResolvePackageDependenciesForBuildDependsOn)" />
133
134   <!--
135     *************************************
136     4. Package Dependency TASK and TARGETS
137     - Raise the lock file to MSBuild Items and create derived items
138     *************************************
139     -->
140
141   <!--
142     ============================================================
143                      RunResolvePackageDependencies
144
145     Generate Definitions and Dependencies based on ResolvePackageDependencies task
146     ============================================================
147     -->
148
149   <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolvePackageDependencies"
150              AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
151   <UsingTask TaskName="Microsoft.NET.Build.Tasks.CheckForTargetInAssetsFile"
152            AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
153   <UsingTask TaskName="Microsoft.NET.Build.Tasks.JoinItems"
154            AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
155
156   <!-- The condition on this target causes it to be skipped during design-time builds if
157         the restore operation hasn't run yet.  This is to avoid displaying an error in
158         the Visual Studio error list when a project is created before NuGet restore has
159         run and created the assets file. -->
160   <Target Name="RunResolvePackageDependencies"
161           Condition=" '$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)')"
162           DependsOnTargets="ReportAssetsLogMessages">
163     
164     <!-- Verify that the assets file has a target for the right framework.  Otherwise, if we restored for the
165          wrong framework, we'd end up finding no references to pass to the compiler, and we'd get a ton of
166          compile errors. -->
167     <CheckForTargetInAssetsFile
168       AssetsFilePath="$(ProjectAssetsFile)"
169       TargetFrameworkMoniker="$(NuGetTargetMoniker)"
170       RuntimeIdentifier="$(RuntimeIdentifier)" />
171
172     <ResolvePackageDependencies
173       ProjectPath="$(MSBuildProjectFullPath)"
174       ProjectAssetsFile="$(ProjectAssetsFile)"
175       ProjectLanguage="$(Language)"
176       ContinueOnError="ErrorAndContinue">
177
178       <Output TaskParameter="TargetDefinitions" ItemName="TargetDefinitions" />
179       <Output TaskParameter="PackageDefinitions" ItemName="PackageDefinitions" />
180       <Output TaskParameter="FileDefinitions" ItemName="FileDefinitions" />
181       <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" />
182       <Output TaskParameter="FileDependencies" ItemName="FileDependencies" />
183       <Output TaskParameter="DiagnosticMessages" ItemName="DiagnosticMessages" />
184     </ResolvePackageDependencies>
185
186   </Target>
187
188   <!--
189     ============================================================
190                      ResolvePackageDependenciesDesignTime
191
192     Aggregate the dependencies produced by ResolvePackageDependencies to a form
193     that's consumable by an IDE to display package dependencies.
194     ============================================================
195     -->
196
197   <UsingTask TaskName="Microsoft.NET.Build.Tasks.PreprocessPackageDependenciesDesignTime"
198              AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
199   
200   <Target Name="ResolvePackageDependenciesDesignTime"
201           Returns="@(_DependenciesDesignTime)"
202           DependsOnTargets="ResolveAssemblyReferencesDesignTime;$(EmitsDependencyDiagnosticMessages)">
203
204     <PreprocessPackageDependenciesDesignTime
205           TargetDefinitions="@(TargetDefinitions)"
206           PackageDefinitions="@(PackageDefinitions)"
207           FileDefinitions="@(FileDefinitions)"
208           PackageDependencies="@(PackageDependencies)"
209           FileDependencies="@(FileDependencies)"
210           References="@(Reference)"
211           DefaultImplicitPackages="$(DefaultImplicitPackages)"
212           InputDiagnosticMessages="@(DiagnosticMessages)"
213           TargetFrameworkMoniker="$(NuGetTargetMoniker)">
214
215       <Output TaskParameter="DependenciesDesignTime" ItemName="_DependenciesDesignTime" />
216     </PreprocessPackageDependenciesDesignTime>
217   </Target>
218     
219   <!--
220     ============================================================
221                      CollectSDKReferencesDesignTime
222
223     Aggregates the sdk specified as project items and implicit
224     packages references.
225     ============================================================
226     -->
227   <UsingTask TaskName="Microsoft.NET.Build.Tasks.CollectSDKReferencesDesignTime"
228          AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
229
230   <Target Name="CollectSDKReferencesDesignTime"
231           Returns="@(_SDKReference)"
232           DependsOnTargets="CollectPackageReferences">
233
234     <CollectSDKReferencesDesignTime
235           SdkReferences="@(SdkReference)"
236           PackageReferences="@(PackageReference)"
237           DefaultImplicitPackages="$(DefaultImplicitPackages)">
238
239       <Output TaskParameter="SDKReferencesDesignTime" ItemName="_SDKReference" />
240     </CollectSDKReferencesDesignTime>
241   </Target>
242
243   <!--
244     ============================================================
245                      CollectResolvedSDKReferencesDesignTime
246
247     Aggregates the sdk specified as project items and implicit
248     packages produced by ResolvePackageDependencies.
249     ============================================================
250     -->
251   <Target Name="CollectResolvedSDKReferencesDesignTime"
252           Returns="@(_ResolvedSDKReference)"
253           DependsOnTargets="ResolveSDKReferencesDesignTime;CollectPackageReferences">
254
255     <CollectSDKReferencesDesignTime
256           SdkReferences="@(ResolvedSdkReference)"
257           PackageReferences="@(PackageReference)"
258           DefaultImplicitPackages="$(DefaultImplicitPackages)">
259
260       <Output TaskParameter="SDKReferencesDesignTime" ItemName="_ResolvedSDKReference" />
261     </CollectSDKReferencesDesignTime>
262   </Target>
263
264   <!--
265     ============================================================
266                      RunProduceContentAssets
267
268     Process content assets by handling preprocessing tokens where necessary, and 
269     produce copy local items, content items grouped by "build action" and file writes
270     ============================================================
271     -->
272
273   <UsingTask TaskName="Microsoft.NET.Build.Tasks.ProduceContentAssets"
274              AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
275
276   <Target Name="RunProduceContentAssets"
277           Returns="_ContentCopyLocalItems;FileWrites"
278           DependsOnTargets="_ComputeActiveTFMFileDependencies">
279     <ItemGroup>
280       <_ContentFileDeps Include="@(_ActiveTFMFileDependencies->WithMetadataValue('FileGroup', 'ContentFile'))" />
281     </ItemGroup>
282     
283     <JoinItems Left="@(_ContentFileDeps)" Right="@(FileDefinitions)" RightMetadata="*">
284       <Output TaskParameter="JoinResult" ItemName="_ContentFileDefs" />
285     </JoinItems>
286
287     <ProduceContentAssets
288       ContentFileDefinitions="@(_ContentFileDefs)"
289       ContentFileDependencies="@(_ContentFileDeps)"
290       ContentPreprocessorValues="@(PreprocessorValue)"
291       ContentPreprocessorOutputDirectory="$(ContentPreprocessorOutputDirectory)"
292       ProduceOnlyPreprocessorFiles="$(ProduceOnlyPreprocessorFilesInBuildTask)"
293       ProjectLanguage="$(Language)">
294
295       <Output TaskParameter="CopyLocalItems" ItemName="_ContentCopyLocalItems" />
296       <Output TaskParameter="ProcessedContentItems" ItemName="_ProcessedContentItems" />
297       <Output TaskParameter="FileWrites" ItemName="FileWrites" />
298     </ProduceContentAssets>
299
300     <!-- The items in _ProcessedContentItems need to go into the appropriately-named item group, 
301          but the names depend upon the items themselves. Split it apart. -->
302     <CreateItem Include="@(_ProcessedContentItems)" Condition="'@(_ProcessedContentItems)' != ''">
303       <Output TaskParameter="Include" ItemName="%(_ProcessedContentItems.ProcessedItemType)" />
304     </CreateItem>
305   </Target>
306
307   <!--
308     ============================================================
309                      ReportAssetsLogMessages
310
311     Report Log Messages in the assets file to MSBuild and raise them as
312     DiagnosticMessage items that can be consumed downstream (e.g. by the
313     dependency node in the solution explorer)
314     ============================================================
315     -->
316
317   <UsingTask TaskName="Microsoft.NET.Build.Tasks.ReportAssetsLogMessages"
318              AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
319
320   <!-- The condition on this target causes it to be skipped during design-time builds if
321         the restore operation hasn't run yet.  This is to avoid displaying an error in
322         the Visual Studio error list when a project is created before NuGet restore has
323         run and created the assets file. -->
324   <Target Name="ReportAssetsLogMessages"
325           Condition="'$(EmitAssetsLogMessages)' == 'true' And ('$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)'))">
326
327     <ReportAssetsLogMessages
328       ProjectAssetsFile="$(ProjectAssetsFile)"
329       ContinueOnError="ErrorAndContinue">
330
331       <Output TaskParameter="DiagnosticMessages" ItemName="DiagnosticMessages" />
332     </ReportAssetsLogMessages>
333
334   </Target>
335
336   <PropertyGroup>
337     <EmitsDependencyDiagnosticMessages>
338       ReportAssetsLogMessages;
339       $(EmitsDependencyDiagnosticMessages)
340     </EmitsDependencyDiagnosticMessages>
341   </PropertyGroup>
342
343   <!--
344     ============================================================
345     HELPERS: Get Package and File Dependencies matching active TFM and RID
346     ============================================================
347     -->
348
349   <Target Name="_ComputeActiveTFMPackageDependencies"
350           DependsOnTargets="RunResolvePackageDependencies"
351           Returns="_ActiveTFMPackageDependencies">
352     <ItemGroup>
353       <_ActiveTFMPackageDependencies Include="@(PackageDependencies->WithMetadataValue('ParentTarget', '$(_NugetTargetMonikerAndRID)'))" />
354     </ItemGroup>
355   </Target>
356
357   <Target Name="_ComputeActiveTFMFileDependencies"
358           DependsOnTargets="RunResolvePackageDependencies"
359           Returns="_ActiveTFMFileDependencies">
360     <ItemGroup>
361       <_ActiveTFMFileDependencies Include="@(FileDependencies->WithMetadataValue('ParentTarget', '$(_NugetTargetMonikerAndRID)'))" />
362     </ItemGroup>
363   </Target>
364
365   <Target Name="_ComputeTFMOnlyFileDependencies"
366           DependsOnTargets="RunResolvePackageDependencies"
367           Returns="_TFMOnlyFileDependencies">
368     <ItemGroup>
369       <_TFMOnlyFileDependencies Include="@(FileDependencies->WithMetadataValue('ParentTarget', '$(NuGetTargetMoniker)'))" />
370     </ItemGroup>
371   </Target>
372
373   <!--
374     ============================================================
375     Reference Targets: For populating References based on lock file
376     - _ComputeLockFileReferences
377     - _ComputeLockFileFrameworks
378     - ResolveLockFileReferences
379     ============================================================
380     -->
381
382   <Target Name="_ComputeLockFileReferences"
383           DependsOnTargets="_ComputeTFMOnlyFileDependencies"
384           Returns="ResolvedCompileFileDefinitions">
385     <ItemGroup>
386       <_CompileFileItems Include="@(_TFMOnlyFileDependencies->WithMetadataValue('FileGroup', 'CompileTimeAssembly'))" />
387     </ItemGroup>
388     <!-- Get corresponding file definitions -->
389     <JoinItems Left="@(_CompileFileItems)" Right="@(FileDefinitions)" RightMetadata="*">
390       <Output TaskParameter="JoinResult" ItemName="_CompileFileDefinitions" />
391     </JoinItems>
392     <ItemGroup>
393       <ResolvedCompileFileDefinitions Include="@(_CompileFileDefinitions->'%(ResolvedPath)')">
394         <Private>false</Private>
395         <NuGetIsFrameworkReference>false</NuGetIsFrameworkReference>
396         <NuGetSourceType>Package</NuGetSourceType>
397         <NuGetPackageId>%(PackageName)</NuGetPackageId>
398         <NuGetPackageVersion>%(PackageVersion)</NuGetPackageVersion>
399       </ResolvedCompileFileDefinitions>
400
401     </ItemGroup>
402   </Target>
403
404   <Target Name="_ComputeLockFileFrameworks"
405           Condition="'$(DisableLockFileFrameworks)' != 'true'"
406           DependsOnTargets="_ComputeTFMOnlyFileDependencies"
407           Returns="ResolvedFrameworkAssemblies">
408     <ItemGroup>
409       <_FrameworkAssemblies Include="@(_TFMOnlyFileDependencies->WithMetadataValue('FileGroup', 'FrameworkAssembly'))" />
410
411       <ResolvedFrameworkAssemblies Include="@(_FrameworkAssemblies->'%(FrameworkAssembly)')">
412         <Private>false</Private>
413         <Pack>false</Pack>
414         <NuGetIsFrameworkReference>true</NuGetIsFrameworkReference>
415         <NuGetSourceType>Package</NuGetSourceType>
416         <NuGetPackageId>%(PackageName)</NuGetPackageId>
417         <NuGetPackageVersion>%(PackageVersion)</NuGetPackageVersion>
418       </ResolvedFrameworkAssemblies>
419
420     </ItemGroup>
421   </Target>
422
423   <Target Name="ResolveLockFileReferences"
424           DependsOnTargets="_ComputeLockFileReferences;_ComputeLockFileFrameworks">
425
426     <ItemGroup>
427       <!-- Add framework references from NuGet packages here, so that if there is also a matching reference from a NuGet package,
428            it will be treated the same as a reference from the project file. -->
429       <Reference Include="@(ResolvedFrameworkAssemblies)" />
430       
431       <ResolvedCompileFileDefinitions Update="@(ResolvedCompileFileDefinitions)">
432         <HintPath>%(FullPath)</HintPath>
433       </ResolvedCompileFileDefinitions>
434     </ItemGroup>
435     
436     <JoinItems Left="@(ResolvedCompileFileDefinitions)" LeftKey="FileName" LeftMetadata="*"
437                Right="@(Reference)" RightKey="" RightMetadata="*">
438       <Output TaskParameter="JoinResult" ItemName="_JoinedResolvedCompileFileDefinitions" />
439     </JoinItems>
440
441     <ItemGroup>
442       <Reference Remove="@(_JoinedResolvedCompileFileDefinitions)" />
443       <Reference Include="@(_JoinedResolvedCompileFileDefinitions)" />
444     </ItemGroup>
445     
446     <ItemGroup>
447       <ResolvedCompileFileDefinitionsToAdd Include="@(ResolvedCompileFileDefinitions)" />
448       <ResolvedCompileFileDefinitionsToAdd Remove="%(_JoinedResolvedCompileFileDefinitions.HintPath)" />
449       
450       <!-- Add the references we computed -->
451       <Reference Include="@(ResolvedCompileFileDefinitionsToAdd)" />
452     </ItemGroup>
453   </Target>
454
455   <!--
456     ============================================================
457     ProjectReference Targets: Include transitive project references before 
458                               ResolveProjectReferences is called
459     - _ComputeTransitiveProjectReferences
460     - IncludeTransitiveProjectReferences
461     ============================================================
462     -->
463
464   <Target Name="_ComputeTransitiveProjectReferences"
465           DependsOnTargets="_ComputeActiveTFMPackageDependencies"
466           Returns="_TransitiveProjectReferences">
467     <ItemGroup>
468       <_TransitiveProjectDependencies Include="@(_ActiveTFMPackageDependencies->WithMetadataValue('TransitiveProjectReference', 'true'))" />
469     </ItemGroup>
470     <!-- Get corresponding package definitions -->
471     <JoinItems Left="@(_TransitiveProjectDependencies)" Right="@(PackageDefinitions)" RightMetadata="*">
472       <Output TaskParameter="JoinResult" ItemName="_TransitiveProjectDefinitions" />
473     </JoinItems>
474     <ItemGroup>
475       <_TransitiveProjectReferences Include="%(_TransitiveProjectDefinitions.Path)">
476         <ResolvedPath>%(_TransitiveProjectDefinitions.ResolvedPath)</ResolvedPath>
477       </_TransitiveProjectReferences>
478     </ItemGroup>
479   </Target>
480
481   <Target Name="IncludeTransitiveProjectReferences"
482           DependsOnTargets="_ComputeTransitiveProjectReferences" >
483     <ItemGroup>
484       <!-- Add the references we computed -->
485       <ProjectReference Include="@(_TransitiveProjectReferences)" />
486     </ItemGroup>
487   </Target>
488   
489   <!--
490     ============================================================
491     Analyzer Targets: For populating Analyzers based on lock file
492     - _ComputeLockFileAnalyzers
493     - ResolveLockFileAnalyzers
494     ============================================================
495     -->
496
497   <Target Name="_ComputeLockFileAnalyzers"
498         DependsOnTargets="RunResolvePackageDependencies"
499         Returns="ResolvedAnalyzers">
500     <ItemGroup>
501       <AnalyzerFiles Include="@(FileDefinitions->WithMetadataValue('Analyzer', 'true'))" />
502       <ResolvedAnalyzers Include="%(AnalyzerFiles.ResolvedPath)" />
503     </ItemGroup>
504   </Target>
505
506   <Target Name="ResolveLockFileAnalyzers"
507           DependsOnTargets="_ComputeLockFileAnalyzers">
508     <ItemGroup>
509
510       <!-- Add the analyzers we computed -->
511       <Analyzer Include="@(ResolvedAnalyzers)" />
512
513     </ItemGroup>
514   </Target>
515
516   <!--
517     ============================================================
518     CopyLocal Targets: For populating CopyLocal based on lock file
519     - _ComputeLockFileCopyLocal
520     - ResolveLockFileCopyLocalProjectDeps
521     ============================================================
522     -->
523
524   <Target Name="_ComputeLockFileCopyLocal"
525         DependsOnTargets="_ComputeActiveTFMFileDependencies;RunProduceContentAssets"
526         Returns="NativeCopyLocalItems;RuntimeCopyLocalItems;ResourceCopyLocalItems;AllCopyLocalItems">
527     <ItemGroup>
528       <_NativeFileItems Include="@(_ActiveTFMFileDependencies->WithMetadataValue('FileGroup', 'NativeLibrary'))" />
529       <_RuntimeFileItems Include="@(_ActiveTFMFileDependencies->WithMetadataValue('FileGroup', 'RuntimeAssembly'))" />
530       <_ResourceFileItems Include="@(_ActiveTFMFileDependencies->WithMetadataValue('FileGroup', 'ResourceAssembly'))" />
531     </ItemGroup>
532     
533     <!--NativeLibrary-->
534     <JoinItems Left="@(_NativeFileItems)" Right="@(FileDefinitions)" RightMetadata="*">
535       <Output TaskParameter="JoinResult" ItemName="_NativeCopyLocalItems" />
536     </JoinItems>
537
538     <!--RuntimeAssembly-->
539     <JoinItems Left="@(_RuntimeFileItems)" Right="@(FileDefinitions)" RightMetadata="*">
540       <Output TaskParameter="JoinResult" ItemName="_RuntimeCopyLocalItems" />
541     </JoinItems>
542
543     <!--ResourceAssembly-->
544     <JoinItems Left="@(_ResourceFileItems)" Right="@(FileDefinitions)" RightMetadata="*">
545       <Output TaskParameter="JoinResult" ItemName="_ResourceCopyLocalItems" />
546     </JoinItems>
547     
548     <ItemGroup>
549      
550       <NativeCopyLocalItems Include="%(_NativeCopyLocalItems.ResolvedPath)" />
551       <RuntimeCopyLocalItems Include="%(_RuntimeCopyLocalItems.ResolvedPath)" />
552       
553       <!-- These resource items are in folders with names which correspond to the locale.  Here, set the DestinationSubDirectory to the
554            folder name so that it will be copied to the right target path and so conflict resolution won't think there are conflicts
555            between satellite assemblies in different languages. -->
556       <_ResourceCopyLocalItems Update="@(_ResourceCopyLocalItems)" Condition="'@(_ResourceCopyLocalItems)' != ''">
557         <DestinationSubDirectory>$([System.IO.Directory]::GetParent(%(ResolvedPath)).get_Name())\</DestinationSubDirectory>
558       </_ResourceCopyLocalItems>
559       <ResourceCopyLocalItems Include="%(_ResourceCopyLocalItems.ResolvedPath)">
560         <DestinationSubDirectory>%(_ResourceCopyLocalItems.DestinationSubDirectory)</DestinationSubDirectory>
561       </ResourceCopyLocalItems>
562
563       <!-- ALL -->
564       <_AllCopyLocalItems Include="@(_NativeCopyLocalItems);@(_RuntimeCopyLocalItems);@(_ResourceCopyLocalItems)" />
565
566       <AllCopyLocalItems Include="@(_AllCopyLocalItems->'%(ResolvedPath)')">
567         <Private>false</Private>
568         <NuGetIsFrameworkReference>false</NuGetIsFrameworkReference>
569         <NuGetSourceType>Package</NuGetSourceType>
570         <NuGetPackageId>%(PackageName)</NuGetPackageId>
571         <NuGetPackageVersion>%(PackageVersion)</NuGetPackageVersion>
572       </AllCopyLocalItems>
573
574       <AllCopyLocalItems Include="@(_ContentCopyLocalItems)">
575         <Private>false</Private>
576         <NuGetIsFrameworkReference>false</NuGetIsFrameworkReference>
577         <NuGetSourceType>Package</NuGetSourceType>
578         <NuGetPackageId>%(PackageName)</NuGetPackageId>
579         <NuGetPackageVersion>%(PackageVersion)</NuGetPackageVersion>
580       </AllCopyLocalItems>
581
582     </ItemGroup>
583   </Target>
584
585   <Target Name="ResolveLockFileCopyLocalProjectDeps"
586           Condition="'$(CopyLocalLockFileAssemblies)' == 'true'"
587           DependsOnTargets="_ComputeLockFileCopyLocal">
588
589     <!-- Add the copy local items -->
590     <ItemGroup>
591       <ReferenceCopyLocalPaths Include="@(AllCopyLocalItems)" />
592     </ItemGroup>
593
594   </Target>
595
596 </Project>