1
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
<UsingTask TaskName="Microsoft.Build.Tasks.FormatUrl" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
4
<UsingTask TaskName="Microsoft.Build.Tasks.FormatVersion" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
5
<UsingTask TaskName="Microsoft.Build.Tasks.ResolveManifestFiles" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
6
<UsingTask TaskName="Microsoft.Build.Tasks.UpdateManifest" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
7
<UsingTask TaskName="Microsoft.Build.Tasks.AssignTargetPath" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
8
<UsingTask TaskName="Microsoft.VisualStudio.EnterpriseTools.MappingTool.CompileTime.ObjectRelationalValidator" AssemblyName="Microsoft.VisualStudio.EnterpriseTools.MappingTool"/>
9
<UsingTask TaskName="Microsoft.Build.Tasks.FxCop" AssemblyName="Microsoft.Build.Tasks, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
12
<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>
14
<!-- Several properties must be set in the main project file, before using this .TARGETS file -->
16
<Error Condition="'$(AssemblyName)'==''"
17
Text="The "AssemblyName" property is not set in project "$(MSBuildProjectFile)". Please set this in the project file before the <Import> of the .Targets file."/>
20
<Configuration Condition=" '$(Configuration)'=='' ">Debug</Configuration>
21
<DebugSymbols Condition=" '$(Configuration)_$(DebugSymbols)_$(DebugType)'=='Debug__'">true</DebugSymbols>
22
<OutputType Condition=" '$(OutputType)' == '' ">exe</OutputType>
23
<OutputPath Condition=" '$(OutputPath)' == '' ">bin\$(Configuration)\</OutputPath>
27
Visual Studio Macros available from both integrated builds and from command line builds.
29
The following properties are 'macros' that are available via Visual Studio for
30
pre and post build steps.
33
<TargetExt Condition="'$(OutputType)'=='exe'">.exe</TargetExt>
34
<TargetExt Condition="'$(OutputType)'=='winexe'">.exe</TargetExt>
35
<TargetExt Condition="'$(OutputType)'=='library'">.dll</TargetExt>
36
<TargetExt Condition="'$(OutputType)'=='module'">.netmodule</TargetExt>
40
<OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir> <!-- Example, bin\Debug\ -->
41
<ConfigurationName Condition=" '$(ConfigurationName)' == '' ">$(Configuration)</ConfigurationName> <!-- Example, Debug -->
42
<ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName> <!-- Example, MyProject -->
43
<TargetName Condition=" '$(TargetName)' == '' ">$(AssemblyName)</TargetName> <!-- Example, MyAssembly -->
44
<ProjectFileName Condition=" '$(ProjectFileName)' == '' ">$(MSBuildProjectFile)</ProjectFileName> <!-- Example, MyProject.csproj -->
45
<ProjectExt Condition=" '$(ProjectExt)' == '' ">$(MSBuildProjectExtension)</ProjectExt> <!-- Example, .csproj -->
46
<TargetFileName Condition=" '$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName> <!-- Example, MyAssembly.dll -->
50
<TargetApplicationManifestFileName Condition="'$(OutputType)'=='library'">Native.$(AssemblyName).manifest</TargetApplicationManifestFileName> <!-- Example, Native.MyAssembly.manifest -->
51
<TargetApplicationManifestFileName Condition="'$(OutputType)'=='winexe'">$(TargetFileName).manifest</TargetApplicationManifestFileName> <!-- Example, MyAssembly.exe.manifest -->
52
<TargetApplicationManifestFileName Condition="'$(OutputType)'=='exe'">$(TargetFileName).manifest</TargetApplicationManifestFileName> <!-- Example, MyAssembly.exe.manifest -->
53
<TargetDeployManifestFileName Condition="'$(TargetDeployManifestFileName)' == ''">$(AssemblyName).application</TargetDeployManifestFileName> <!-- Example, MyAssembly.application -->
54
<GenerateClickOnceManifests>$(GenerateManifests)</GenerateClickOnceManifests>
56
<ManifestIdentitity>$(AssemblyName)</ManifestIdentitity>
57
<ApplicationManifestIdentitity Condition="'$(OutputType)'=='library'">Native.$(AssemblyName)</ApplicationManifestIdentitity>
58
<ApplicationManifestIdentitity Condition="'$(OutputType)'=='winexe'">$(ManifestIdentitity).exe</ApplicationManifestIdentitity>
59
<ApplicationManifestIdentitity Condition="'$(OutputType)'=='exe'">$(ManifestIdentitity).exe</ApplicationManifestIdentitity>
60
<DeployManifestIdentitity>$(ManifestIdentitity).application</DeployManifestIdentitity>
63
<!-- Create the output path as an item so that we can use %(FullPath) on it. -->
65
<OutputPathItem Include="$(OutputPath)">
66
<InProject>false</InProject>
71
<!-- Example, c:\MyProjects\MyProject\bin\debug\ -->
72
<!-- UNDONE. Condition intentionally omitted on this one, because it causes problems
73
when we pick up the value of an environment variable named TargetDir -->
74
<TargetDir>@(OutputPathItem->'%(FullPath)')</TargetDir>
76
<!-- Example, c:\MyProjects\MyProject\bin\debug\MyAssembly.dll -->
77
<TargetPath Condition=" '$(TargetPath)' == '' ">@(OutputPathItem->'%(FullPath)$(TargetFileName)')</TargetPath>
79
<!-- Example, c:\MyProjects\MyProject\ -->
80
<ProjectDir Condition=" '$(ProjectDir)' == '' ">$(MSBuildProjectDirectory)\</ProjectDir>
82
<!-- Example, c:\MyProjects\MyProject\MyProject.csproj -->
83
<ProjectPath Condition=" '$(ProjectPath)' == '' ">$(ProjectDir)$(ProjectFileName)</ProjectPath>
85
<!-- Example, .NET -->
86
<PlatformName Condition=" '$(PlatformName)' == '' ">.NET</PlatformName>
90
Visual Studio Macros available only from integrated builds.
92
The following properties are 'macros' that are available via Visual Studio for
93
pre and post build steps. However, they are not defined when building from
97
<DevEnvDir Condition="'$(DevEnvDir)'==''">*Undefined*</DevEnvDir>
98
<SolutionName Condition="'$(SolutionName)'==''">*Undefined*</SolutionName> <!-- Example, MySolution -->
99
<SolutionFileName Condition="'$(SolutionFileName)'==''">*Undefined*</SolutionFileName> <!-- Example, MySolution.sln -->
100
<SolutionPath Condition="'$(SolutionPath)'==''">*Undefined*</SolutionPath> <!-- Example, f:\MySolutions\MySolution\MySolution.sln -->
101
<SolutionDir Condition="'$(SolutionDir)'==''">*Undefined*</SolutionDir> <!-- Example, f:\MySolutions\MySolution\ -->
102
<SolutionExt Condition="'$(SolutionExt)'==''">*Undefined*</SolutionExt> <!-- Example, .sln -->
103
<FxCopDir Condition="'$(FxCopDir)'==''">*Undefined*</FxCopDir>
107
The following properties and items are used internally by this targets file.
110
<AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
111
<AutoUnifyAssemblyReferences Condition="'$(OutputType)'=='exe'">false</AutoUnifyAssemblyReferences>
112
<AutoUnifyAssemblyReferences Condition="'$(OutputType)'=='winexe'">false</AutoUnifyAssemblyReferences>
113
<BaseOutputPath Condition="'$(BaseOutputPath)'==''">obj\</BaseOutputPath>
114
<IntermediateOutputPath Condition="'$(IntermediateOutputPath)'==''">$(BaseOutputPath)$(Configuration)\</IntermediateOutputPath>
115
<RootNamespaceDot Condition="'$(RootNamespace)'!=''">$(RootNamespace).</RootNamespaceDot>
119
<IntermediateAssembly Include="$(IntermediateOutputPath)$(TargetName)$(TargetExt)">
120
<InProject>false</InProject>
121
</IntermediateAssembly>
123
<DocFileItem Include="$(DocFile)" Condition="'$(DocFile)'!=''">
124
<InProject>false</InProject>
127
<FinalDocFile Include="@(DocFileItem->'$(OutDir)%(Filename)%(Extension)')">
128
<InProject>false</InProject>
133
<!-- Create an item list for the trust licenses to be used in the ClickOnce deploy manifest -->
134
<TrustLicenses Include="$(TrustLicenseFile)">
135
<InProject>false</InProject>
138
<!-- Create an item for entry point of the ClickOnce application (Example: WindowsApplication1.exe) -->
139
<ManifestEntryPoint Include="@(IntermediateAssembly)" Condition="'$(GenerateClickOnceManifests)'=='true'">
140
<TargetPath>$(TargetFileName)</TargetPath>
141
<InProject>false</InProject>
142
</ManifestEntryPoint>
144
<!-- Create an item for the application icon if one exists in the project (Example: app.ico) -->
145
<ManifestIconFile Include="$(ApplicationIcon)" Condition="Exists('$(ApplicationIcon)')">
146
<TargetPath>$(ApplicationIcon)</TargetPath>
147
<InProject>false</InProject>
150
<!-- Create an item for the output application manifest (Example: WindowsApplication1.exe.manifeset) -->
151
<ApplicationManifest Include="$(IntermediateOutputPath)$(TargetApplicationManifestFileName)">
152
<TargetPath>$(TargetApplicationManifestFileName)</TargetPath>
153
<InProject>false</InProject>
154
</ApplicationManifest>
156
<!-- Create an item for the output deploy manifest (Example: WindowsApplication1.application) -->
157
<DeployManifest Include="$(IntermediateOutputPath)$(TargetDeployManifestFileName)">
158
<TargetPath>$(TargetDeployManifestFileName)</TargetPath>
159
<InProject>false</InProject>
164
Determine the target URL for ClickOnce deployment.
165
Prefer the UpdateUrl, falling back to InstallUrl or PublishUrl if blank
168
<TargetUrl>$(UpdateUrl)</TargetUrl>
169
<TargetUrl Condition="'$(TargetUrl)'==''">$(InstallUrl)</TargetUrl>
170
<TargetUrl Condition="'$(TargetUrl)'==''">$(PublishUrl)</TargetUrl>
171
<TargetUrl Condition="'$(TargetUrl)'!=''">$(TargetUrl)/$(TargetDeployManifestFileName)</TargetUrl>
175
Determine the URLs for the bootstrapper
178
<ApplicationUrl Condition="'$(IsWebBootstrapper)'=='true'">$(InstallUrl)</ApplicationUrl>
179
<ApplicationUrl Condition="'$(IsWebBootstrapper)_$(InstallUrl)'=='true_'">$(PublishUrl)</ApplicationUrl>
180
<ComponentsUrl Condition="'$(BootstrapperComponentsUrlEnabled)'=='true'">$(BootstrapperComponentsUrl)</ComponentsUrl>
184
Output location for publish target.
187
<PublishDir Condition="'$(PublishDir)'==''">publish\</PublishDir>
191
Determine the target OS version for ClickOnce deployment.
192
If using regfree COM (i.e. one or more manifest references) then the minimum OS
193
version is Windows XP RTM.
194
However, this can be overriden if an explicit OSVersion is specified in the project.
197
<TargetOSVersion Condition="'@(NativeReference)'!=''">5.1.2600.0</TargetOSVersion>
198
<TargetOSVersion Condition="'$(OSVersion)'!=''">$(OSVersion)</TargetOSVersion>
202
Platform is the target Processor Architecture. For example, x86, IA64 or AMD64.
205
<ProcessorArchitecture Condition="'$(ProcessorArchitecture)'==''">x86</ProcessorArchitecture>
209
AvailablePlatforms is the list of platform targets available.
212
<AvailablePlatforms>Any CPU,x86,x64,Itanium</AvailablePlatforms>
216
The default for compilers is to not delay-sign. If $(DelaySign) is false, let the compiler
217
use its default rather than forcing a no-delay-sign flag to be passed in. This is so that
218
attributes in the source code can override this decision.
221
<DelaySign Condition="'$(DelaySign)'!='true'"></DelaySign>
225
These properties control web reference proxy generation.
228
<WebReference_EnableProperties Condition=" '$(WebReference_EnableProperties)' == '' ">true</WebReference_EnableProperties>
229
<WebReference_EnableSQLTypes Condition=" '$(WebReference_EnableSQLTypes)' == '' ">true</WebReference_EnableSQLTypes>
230
<WebReference_EnableLegacyEventingModel Condition=" '$(WebReference_EnableLegacyEventingModel)' == '' ">false</WebReference_EnableLegacyEventingModel>
234
Default set of FxCop rules. Can be overridden in project file.
237
<FxCopRules Condition="'$(FxCopRules)'==''">ComRules.dll;DesignRules.dll;GlobalizationRules.dll;MaintainabilityRules.dll;NamingRules.dll;PerformanceRules.dll;ReliabilityRules.dll;SecurityRules.dll;UsageRules.dll</FxCopRules>
238
<FxCopExclusionsFile Condition="'$(FxCopExclusionsFile)'==''">Exclusions.FxCop</FxCopExclusionsFile>
242
<MSBuildAllProjects>$(MSBuildProjectFullPath);$(MSBuildBinPath)\Microsoft.Common.targets</MSBuildAllProjects>
243
<MSBuildAllProjects Condition="Exists('$(MSBuildProjectFullPath).user')">$(MSBuildAllProjects);$(MSBuildProjectFullPath).user</MSBuildAllProjects>
247
These parameters control where to look in the registry for directories to search for
248
assemblies in the assembly resolution tasks.
251
<FrameworkRegistryBase Condition=" '$(FrameworkRegistryBase)' == '' ">Software\Microsoft\.NetFramework</FrameworkRegistryBase>
252
<TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v2.0</TargetFrameworkVersion>
253
<AssemblyFoldersSuffix Condition=" '$(AssemblyFoldersSuffix)' == '' ">AssemblyFoldersEx</AssemblyFoldersSuffix>
257
The SearchPaths property is set to find assemblies in the following order:
259
(1) Files from current project - indicated by {CandidateAssemblyFiles}
260
(2) $(ReferencePath) - the reference path property, which comes from the .USER file.
261
(3) The directory of MSBuild's "target" runtime from GetFrameworkPath.
262
The "target" runtime folder is the folder of the runtime that MSBuild is a part of.
263
(4) Registered assembly folders, indicated by {Registry:*,*,*}
264
(5) Legacy registered assembly folders, indicated by {AssemblyFolders}
265
(6) $(HintPath) - the hintpath from the referenced item itself, indicated by {HintPath}.
266
(7) Resolve to the GAC.
267
(8) Treat the reference's Include as if it were a real file name.
270
<AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == '' ">
271
{CandidateAssemblyFiles};
274
{TargetFrameworkDirectory};
275
{Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)};
279
</AssemblySearchPaths>
290
Outputs="$(TargetPath)"
291
DependsOnTargets="$(BuildDependsOn)"
295
This target creates <TargetPath> tags for items. <TargetPath> is a relative folder plus filename
296
for the destination of this item.
299
Name="AssignTargetPaths"
302
<AssignTargetPath Files="@(EmbeddedResource)" RootFolder="$(MSBuildProjectDirectory)">
303
<Output TaskParameter="AssignedFiles" ItemName="EmbeddedResourceWithTargetPath" />
306
<AssignTargetPath Files="@(EmbeddedMappingSchemaFile)" RootFolder="$(MSBuildProjectDirectory)">
307
<Output TaskParameter="AssignedFiles" ItemName="EmbeddedMappingSchemaFileWithTargetPath" />
310
<AssignTargetPath Files="@(Content)" RootFolder="$(MSBuildProjectDirectory)">
311
<Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath" />
314
<AssignTargetPath Files="@(Compile)" RootFolder="$(MSBuildProjectDirectory)">
315
<Output TaskParameter="AssignedFiles" ItemName="CompileWithTargetPath" />
318
<AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)">
319
<Output TaskParameter="AssignedFiles" ItemName="NoneWithTargetPath" />
323
Include="@(None);@(Content)"
324
Condition="'%(Filename)%(Extension)' == 'App.Config'"
325
AddAttributeName="TargetPath"
326
AddAttributeValue="$(TargetFileName).config"
328
<Output TaskParameter="Include" ItemName="AppConfigWithTargetPath" />
333
RootFolder="$(MSBuildProjectDirectory)"
334
Condition="'%(Extension)' == '.manifest'"
336
<Output TaskParameter="AssignedFiles" ItemName="BaseManifestWithTargetPath" />
340
Value="$(TargetDir)">
341
<Output TaskParameter="Value" PropertyName="TargetDir" />
345
Value="$(TargetPath)">
346
<Output TaskParameter="Value" PropertyName="TargetPath" />
352
This target is called only when doing a real build or checking whether a build is required.
353
It is specifically not called during project load.
356
<BuildOnlySettings></BuildOnlySettings>
357
<BuildingProject>false</BuildingProject>
360
Name="BuildOnlySettings">
362
<CreateProperty Value="true">
363
<Output TaskParameter="Value" PropertyName="BuildingProject" />
369
Prepare the prerequisites for building.
372
<PrepareForBuildDependsOn>GetFrameworkPaths;AssignTargetPaths</PrepareForBuildDependsOn>
375
Name="PrepareForBuild"
376
DependsOnTargets="$(PrepareForBuildDependsOn)"
379
<!-- Create the directories for intermediate and final build products. -->
381
Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)')"/>
384
We support building libraries even when there are no source files.
385
If no source file is specified in the project file, then we generate
386
an empty one here with an extension of $(DefaultLanguageSourceExtension).
389
Condition="'@(Compile)'==''"
391
Files="$(IntermediateOutputPath)VisualStudio.Empty$(DefaultLanguageSourceExtension)">
393
<Output TaskParameter="TouchedFiles" ItemName="Compile" Condition=" '$(BuildingInsideVisualStudio)' != 'true' "/>
400
Get the Frameworks and Platform SDK paths.
403
<GetFrameworkPathsDependsOn></GetFrameworkPathsDependsOn>
406
Name="GetFrameworkPaths"
407
DependsOnTargets="$(GetFrameworkPathsDependsOn)"
410
<!-- Get the path to the target .NET framework directory. -->
412
<Output TaskParameter="Path" PropertyName="TargetFrameworkDirectory"/>
415
<!-- Get the path to the target .NET framework SDK directory. -->
416
<GetFrameworkSDKPath>
417
<Output TaskParameter="Path" PropertyName="TargetFrameworkSDKDirectory"/>
418
</GetFrameworkSDKPath>
423
Run the pre-build event if there is one.
426
<PreBuildEventDependsOn></PreBuildEventDependsOn>
430
Condition="'$(PreBuildEvent)'!=''"
431
DependsOnTargets="$(PreBuildEventDependsOn)"
435
WorkingDirectory="$(OutDir)"
436
Command="$(PreBuildEvent)" />
441
<UnmanagedUnregistrationDependsOn></UnmanagedUnregistrationDependsOn>
444
Name="UnmanagedUnregistration"
445
Condition="'$(RegisterForComInterop)_and_$(OutputType)'=='true_and_library'"
446
DependsOnTargets="$(UnmanagedUnregistrationDependsOn)"
450
Condition="Exists('$(OutputPath)$(TargetFileName)')"
451
Assemblies="$(OutputPath)$(TargetFileName)"
457
Determine the strong name key source.
459
$(AssemblyKeyContainerName) - The key file
460
$(AssemblyOriginatorKeyFile) - The key file type (.snk or .pfx)
463
$(KeyContainerName) - Use a container
464
$(KeyOriginatorFile) - Use a file contining the key definition (.snk).
467
Name="ResolveKeySource"
468
Condition="'$(AssemblyKeyContainerName)$(AssemblyOriginatorKeyFile)'!=''"
472
KeyContainer="$(AssemblyKeyContainerName)"
473
KeyFile="$(AssemblyOriginatorKeyFile)"
474
SuppressAutoClosePasswordPrompt="$(BuildingInsideVisualStudio)"
477
<Output TaskParameter="ResolvedKeyContainer" PropertyName="ManifestKeyContainerName"/>
478
<Output TaskParameter="ResolvedKeyFile" PropertyName="ManifestKeyOriginatorFile"/>
482
Value="$(ManifestKeyContainerName)"
483
Condition=" '$(SignAssembly)' == 'true' ">
485
<Output TaskParameter="Value" PropertyName="KeyContainerName" />
489
Value="$(ManifestKeyOriginatorFile)"
490
Condition=" '$(SignAssembly)' == 'true' ">
492
<Output TaskParameter="Value" PropertyName="KeyOriginatorFile" />
496
Value="$(AssemblyKeyProviderName)" >
498
<Output TaskParameter="Value" PropertyName="KeyProviderName" />
502
<Message Text="(out) KeySources: Container:'$(KeyContainerName)' File:'$(KeyOriginatorFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
503
<Message Text="(out) KeySources: ManifestContainer:'$(ManifestKeyContainerName)' ManifestFile:'$(ManifestKeyOriginatorFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
509
Resolve native references
512
@(NativeReference) - The manifest reference (or list of manifest references)
515
@(NativeReferenceFile) - List of manifest files referenced.
516
@(NetAssemblyReference) - List of .NET assemblies contained in the manifest.
517
@(COMComponents) - List of COM components contained in the manifest.
518
@(TypeLibraries) - List of type libraries contained in the manifest.
519
@(COMFileReference) - List of loose files contained in the manifest.
520
@(LooseManifestFile) - List of loose files contained in the manifest.
523
Name="ResolveNativeReferences"
524
Condition="'@(NativeReference)'!=''"
527
<Message Text="(in) Native References: '@(NativeReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
529
<ResolveNativeReference
530
NativeReferences="@(NativeReference)"
533
<Output TaskParameter="ContainingReferenceFiles" ItemName="NativeReferenceFile"/>
534
<Output TaskParameter="ContainedNetAssemblies" ItemName="NetAssemblyReference"/>
535
<Output TaskParameter="ContainedComComponents" ItemName="ComClassReference"/>
536
<Output TaskParameter="ContainedTypeLibraries" ItemName="COMReference"/>
537
<Output TaskParameter="ContainedLooseTlbFiles" ItemName="COMFileReference"/>
538
<Output TaskParameter="ContainedLooseEtcFiles" ItemName="LooseManifestFile"/>
540
</ResolveNativeReference>
542
<Message Text="(out) NativeReferenceFile: '@(NativeReferenceFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
543
<Message Text="(out) NetAssemblyReference: '@(NetAssemblyReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
544
<Message Text="(out) ComClassReference: '@(ComClassReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
545
<Message Text="(out) COMReference: '@(COMReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
546
<Message Text="(out) COMFileReference: '@(COMFileReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
547
<Message Text="(out) LooseManifestFile: '@(LooseManifestFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
552
Resolve COM references
555
@(COMReference) - The list of COM references
556
$(BaseOutputPath) - The output directory in which to generate wrapper assemblies
559
@(ReferencePath) - Paths to referenced wrappers.
561
NOTE: If ResolveComReferences is invoked from the IDE, PrepareForBuild may need to run to create directories,
562
so don't remove the PrepareForBuild target from the DependsOnTargets below!
565
Name="ResolveComReferences"
566
Condition="'@(COMReference)_@(COMFileReference)'!='_'"
567
DependsOnTargets="PrepareForBuild;ResolveKeySource;ResolveAssemblyReferences"
570
<Message Text="(in) COM References: '@(COMReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
571
<Message Text="(in) COM File References: '@(COMFileReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
575
TypeLibNames="@(COMReference)"
576
TypeLibFiles="@(COMFileReference)"
577
ResolvedAssemblyReferences="@(ReferencePath)"
578
WrapperOutputDirectory="$(BaseOutputPath)"
579
KeyContainer="$(KeyContainerName)"
580
KeyFile="$(KeyOriginatorFile)"
581
DelaySign="$(DelaySign)"
584
<Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
586
<Output TaskParameter="ResolvedFiles" ItemName="ReferenceComWrappersToCopyLocal"/>
588
<Output TaskParameter="ResolvedModules" ItemName="ResolvedIsolatedComModules"
589
Condition=" '%(COMReference.Isolated)' == 'true' "/>
591
</ResolveComReference>
593
<Message Text="(out) ResolvedReferencePaths: '@(ReferencePath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
597
Split project references into two lists: VC project references and others (handled by the MSBuild engine)
600
@(ProjectReference) - the list of all project references
603
@(VCProjectReference) - the list of VC (managed VC++ to be exact) project references
604
@(MSBuildProjectReference) - the list of MSBuild project references
607
Name="SplitProjectReferencesByType"
608
Condition="'@(ProjectReference)'!=''">
610
<Message Text="(in) All Project References: '@(ProjectReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
612
<!-- Copy all VC project references to the VCProjectReference item list (using the VC package GUID) -->
614
Include="@(ProjectReference)"
615
Condition="'%(ProjectReference.Package)'=='{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}'">
617
<Output TaskParameter="Include" ItemName="VCProjectReference"/>
620
<!-- Copy the rest of the project references to the MSBuildProjectReference item list -->
622
Include="@(ProjectReference)"
623
Condition="'%(ProjectReference.Package)'!='{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}'">
625
<Output TaskParameter="Include" ItemName="MSBuildProjectReference"/>
628
<Message Text="(out) VC Project References: '@(VCProjectReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
629
<Message Text="(out) MSBuild Project References: '@(MSBuildProjectReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
633
Find outputs of referenced VC projects (currently we never build VC projects ourselves)
636
@(VCProjectReference) - the list of VC project references
639
@(ResolvedProjectReferencePaths) - paths to projects' outputs
643
This is a simplified way to guess the configuration we should look up in the VC project.
644
This will go away once we implement solution configurations properly
646
<PropertyGroup Condition="'$(BuildingInsideVisualStudio)'!='true'">
647
<VCConfiguration>$(Configuration)|Win32</VCConfiguration>
650
Name="ResolveVCProjectReferences"
651
Condition="'@(VCProjectReference)'!=''"
652
DependsOnTargets="SplitProjectReferencesByType">
654
<Message Text="(in) VC Project References: '@(VCProjectReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
656
<!-- This property is prepopulated with VC project outputs by VS if we're building inside the IDE -->
657
<Message Text="(in) Resolved VC References: '$(ResolvedVCProjectOutputs)'" Condition="'$(MSBuildTargetsVerbose)$(BuildingInsideVisualStudio)'=='truetrue'"/>
659
<ResolveVCProjectOutput
660
ProjectReferences="@(VCProjectReference)"
661
PreresolvedVCOutputs="$(ResolvedVCProjectOutputs)"
662
Condition="'$(BuildingInsideVisualStudio)'=='true'">
664
<Output TaskParameter="ResolvedOutputPaths" ItemName="ResolvedProjectReferencePaths"/>
666
</ResolveVCProjectOutput>
668
<ResolveVCProjectOutput
669
ProjectReferences="@(VCProjectReference)"
670
Configuration="$(VCConfiguration)"
671
Condition="'$(BuildingInsideVisualStudio)'!='true'">
673
<Output TaskParameter="ResolvedOutputPaths" ItemName="ResolvedProjectReferencePaths"/>
675
</ResolveVCProjectOutput>
677
<Message Text="(out) ReferencePaths: '@(ResolvedProjectReferencePaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
682
Build referenced projects:
685
@(MSBuildProjectReference) - The list of project references.
688
@(ResolvedProjectReferencePaths) - Paths to referenced projects.
691
Name="ResolveProjectReferences"
692
Condition="'@(MSBuildProjectReference)'!=''"
693
DependsOnTargets="SplitProjectReferencesByType">
695
<Message Text="(in) MSBuild Project References: '@(MSBuildProjectReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
698
Build referenced projects when doing an integrated build from VisualStudio.
699
When building from VisualStudio, just gather the referenced build outputs.
700
Visual studio will already have built the project, so there's no need to
703
We have ContinueOnError="true" because we don't want to block the build if
704
one of the referenced projects doesn't exist or contains syntax errors.
707
Projects="@(MSBuildProjectReference)"
708
Targets="MainBuiltProjectOutputGroup"
709
Condition="'$(BuildingInsideVisualStudio)'=='true'"
710
ContinueOnError="!$(BuildingProject)">
712
<Output TaskParameter="TargetOutputs" ItemName="ResolvedProjectReferencePaths"/>
717
Build referenced projects when building from the command line.
718
When building from the command line, always build the referenced projects.
721
Projects="@(MSBuildProjectReference)"
722
Condition="'$(BuildingInsideVisualStudio)'!='true'">
724
<Output TaskParameter="TargetOutputs" ItemName="ResolvedProjectReferencePaths"/>
728
<Message Text="(out) ReferencePaths: '@(ResolvedProjectReferencePaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
733
Split EmbeddedResource and EmbeddedMappingSchemaFile into five lists based on whether
734
they are resx files, licx files or other resources and whether they should be localized.
737
@(EmbeddedResourceWithTargetPath) - The raw list of resources.
738
@(EmbeddedMappingSchemaFileWithTargetPath) - The raw list of embedded mapping schema file resources.
741
@(MixedResourceWithNoCulture) - The EmbeddedResource items that have no Culture property.
742
@(MixedResourceWithCulture) - The EmbeddedResource items that have a Culture property.
745
@(LicxFile) - The EmbeddedResource items with extension equal to '.licx'.
746
@(ResxWithNoCulture) - Those with no culture that should be passed through the ResGen task.
747
@(ResxWithCulture) - Those with culture that should be passed through the ResGen task.
748
@(NonResxWithNoCulture) - Those that should be passed directly into the compiler.
749
@(NonResxWithCulture) - Those that should be passed directly into AL for the satellite assemblies.
752
Name="SplitResourcesByCulture"
753
DependsOnTargets="AssignTargetPaths"
756
<Message Text="(in) Resources: '@(EmbeddedResourceWithTargetPath)@(EmbeddedMappingSchemaFileWithTargetPath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
759
Condition="'%(Extension)'=='.licx'"
760
Include="@(EmbeddedResourceWithTargetPath)">
762
<Output TaskParameter="Include" ItemName="LicxFile"/>
765
<Message Text="(out) LicxFile: '@(LicxFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
768
Condition="'%(Extension)'!='.licx'"
769
Files="@(EmbeddedResourceWithTargetPath);@(EmbeddedMappingSchemaFileWithTargetPath)">
771
<!-- Create the list of culture resx and embedded resource files -->
772
<Output TaskParameter="AssignedFilesWithCulture" ItemName="MixedResourceWithCulture"/>
773
<!-- Create the list of non-culture resx and embedded resource files -->
774
<Output TaskParameter="AssignedFilesWithNoCulture" ItemName="MixedResourceWithNoCulture"/>
778
<Message Text="(intermediate) EmbeddedResource files with no culture: '@(MixedResourceWithNoCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
779
<Message Text="(intermediate) EmbeddedResource files with culture: '@(MixedResourceWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
782
Condition="'%(Extension)'=='.resx'"
783
Include="@(MixedResourceWithNoCulture)">
785
<Output TaskParameter="Include" ItemName="ResxWithNoCulture"/>
788
Condition="'%(Extension)'!='.resx'"
789
Include="@(MixedResourceWithNoCulture)">
790
<Output TaskParameter="Include" ItemName="NonResxWithNoCulture"/>
793
<Message Text="(out) Non *.resx files with no culture: '@(NonResxWithNoCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
794
<Message Text="(out) Resx files with no culture: '@(ResxWithNoCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
797
Condition="'%(Extension)'=='.resx'"
798
Include="@(MixedResourceWithCulture)">
800
<Output TaskParameter="Include" ItemName="ResxWithCulture"/>
803
Condition="'%(Extension)'!='.resx'"
804
Include="@(MixedResourceWithCulture)">
806
<Output TaskParameter="Include" ItemName="NonResxWithCulture"/>
809
<Message Text="(out) Non *.resx files with culture: '@(NonResxWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
810
<Message Text="(out) Resx files with culture: '@(ResxWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
815
Copy non-resx resource files from their original name to the manifest resource name.
816
This is so that the file will be in the location expected by the compiler.
818
UNDONE-RG. This target should go away entirely. We shouldn't need to copy the non-RESXs
819
to their manifest name. Instead, just stick a "LogicalName" attribute on it, and it should
820
be taken care of by the compiler automatically.
823
@(NonResxWithNoCulture) - The list of non-culture non-resx resource files to copy.
824
@(NonResxWithCulture) - The list of culture non-resx resource files to copy.
825
@(ManifestNonResxWithNoCulture) - The manifest resource name of non-culture non-resx resource files.
826
@(ManifestNonResxWithCulture) - The manifest resource name of culture non-resx resource files.
829
@(ManifestNonResxWithNoCultureOnDisk) - The final location on disk of the non-culture non-resx resource files.
830
@(ManifestNonResxWithCultureOnDisk) - The final location on disk of the culture non-resx resource files.
833
Name="CopyNonResxEmbeddedResources"
834
Condition="'@(NonResxWithNoCulture)@(NonResxWithCulture)@(ManifestNonResxWithNoCulture)@(ManifestNonResxWithCulture)'!=''"
837
<Message Text="(in) The names of the non-RESX files to copy from: '@(NonResxWithNoCulture);@(NonResxWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
838
<Message Text="(in) Manifest-named non *.resx files to copy to: '@(ManifestNonResxWithNoCulture);@(ManifestNonResxWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
841
SourceFiles="@(NonResxWithNoCulture)"
842
DestinationFiles="@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)')"
843
SkipUnchangedFiles="true"
844
Condition="'@(NonResxWithNoCulture)'!=''"
848
TaskParameter="DestinationFiles"
849
ItemName="ManifestNonResxWithNoCultureOnDisk"/>
854
Directories="$(IntermediateOutputPath)%(ManifestNonResxWithCulture.Culture)"
858
SourceFiles="@(NonResxWithCulture)"
859
DestinationFiles="@(ManifestNonResxWithCulture->'$(IntermediateOutputPath)%(Identity)')"
860
SkipUnchangedFiles="true"
861
Condition="'@(NonResxWithCulture)'!=''"
865
TaskParameter="DestinationFiles"
866
ItemName="ManifestNonResxWithCultureOnDisk"/>
873
Run resgen on the given resx files.
875
This task checks timestamps internally for the .resx files as well as any linked files that are
876
referenced in the .resx file against the .resources file, so it does not need to specify Inputs
877
or Outputs in the Target.
880
@(ResxWithNoCulture) - The names the non-culture .RESX files.
881
@(ResxWithCulture) - The names the culture .RESX files.
882
@(ManifestResourceWithNoCultureName) - The corresponding manifest resource name (.RESOURCE)
883
@(ManifestResourceWithCultureName) - The corresponding manifest resource name (.RESOURCE)
886
@(ManifestResourceWithNoCulture) - The path to the corresponding .RESOURCE files
887
@(ManifestResourceWithCulture) - The path to the corresponding .RESOURCE files
890
<ResGenDependsOn>ResolveAssemblyReferences</ResGenDependsOn>
891
<UseSourcePath Condition="'$(UseSourcePath)'==''">true</UseSourcePath>
895
Condition="'@(ResxWithNoCulture)@(ResxWithCulture)'!=''"
896
DependsOnTargets="$(ResGenDependsOn)"
899
<Message Text="(in) The names the non-culture .RESX files: '@(ResxWithNoCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
900
<Message Text="(in) The names the culture .RESX files: '@(ResxWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
901
<Message Text="(in) Manifest-named resx files files with no culture: '@(ManifestResourceWithNoCultureName)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
902
<Message Text="(in) Manifest-named resx files with culture: '@(ManifestResourceWithCultureName)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
905
Sources="@(ResxWithNoCulture)"
906
Condition=" '@(ResxWithNoCulture)' != '' "
907
References="@(ReferencePath)"
908
UseSourcePath="$(UseSourcePath)"
909
StateFile="$(IntermediateOutputPath)ResGen.cache"
910
OutputResources="@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
911
ToolPath="$(ResGenToolPath)">
914
TaskParameter="OutputResources"
915
ItemName="ManifestResourceWithNoCulture"/>
919
Sources="@(ResxWithCulture)"
920
Condition=" '@(ResxWithCulture)' != '' "
921
References="@(ReferencePath)"
922
UseSourcePath="$(UseSourcePath)"
923
OutputResources="@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
924
ToolPath="$(ResGenToolPath)">
927
TaskParameter="OutputResources"
928
ItemName="ManifestResourceWithCulture"/>
931
<Message Text="(out) The path to the corresponding non-culture .RESOURCE files: '@(ManifestResourceWithNoCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
932
<Message Text="(out) The path to the corresponding culture .RESOURCE files: '@(ManifestResourceWithCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
937
Create one satellite assembly for every unique culture in the resources.
940
@(ManifestResourceWithCulture) - The list of culture-specific resource (.RESOURCE) files.
941
@(ManifestNonResxWithCultureOnDisk) - The list of culture-specific non-.RESX resource files.
944
@(SatelliteAssemblies) - Those with no culture that should be passed through the ResGen task.
947
<CreateSatelliteAssembliesDependsOn></CreateSatelliteAssembliesDependsOn>
950
Name="CreateSatelliteAssemblies"
951
Condition="'@(ManifestResourceWithCulture)@(ManifestNonResxWithCultureOnDisk)'!=''"
952
Inputs="@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk);@(IntermediateAssembly)"
953
Outputs="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll"
954
DependsOnTargets="$(CreateSatelliteAssembliesDependsOn)"
956
<Message Text="(in) The list of locale-specific resource files: '@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
959
Directories="$(IntermediateOutputPath)%(ManifestResourceWithCulture.Culture)"
960
Condition=" '@(ManifestResourceWithCulture)' != '' "
964
Directories="$(IntermediateOutputPath)%(ManifestNonResxWithCultureOnDisk.Culture)"
965
Condition=" '@(ManifestNonResxWithCultureOnDisk)' != '' "
969
EmbedResources="@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
971
TemplateFile="@(IntermediateAssembly)"
972
KeyContainer="$(KeyContainerName)"
973
KeyFile="$(KeyOriginatorFile)"
974
DelaySign="$(DelaySign)"
975
OutputAssembly="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll">
977
<Output TaskParameter="OutputAssembly"
978
ItemName="SatelliteAssemblies"/>
981
<Message Text="(out) The list of satellite assemblies: '@(SatelliteAssemblies)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
985
Given the list of assemblies, find the closure of all assemblies that they depend on. These are
986
what we need to copy to the output directory.
989
@(Reference) - List of assembly references as fusion names.
990
@(NetAssemblyReference) - List of assembly references from manifests.
991
@(ResolvedProjectReferencePaths) - List of project references produced by projects that this project depends on.
993
The 'Private' attribute on the reference corresponds to corresponds to the Copy Local flag in VS.
994
The 'Private' flag can have three possible values:
995
- 'True' means the reference should be Copied Local
996
- 'False' means the reference should not be Copied Local
997
- [Missing] means this task will decide whether to treat this reference as CopyLocal or not.
1000
@(ReferencePath) - Paths to resolved primary files.
1001
@(ReferenceDependencyPaths) - Paths to resolved dependency files.
1002
@(ReferenceRelatedPaths) - Paths to .xmls and .pdbs.
1003
@(ReferenceSatellitePaths) - Paths to satellites.
1004
@(ReferenceCopyLocalPaths) - Paths to files that should be copied to the local directory.
1007
<ResolveAssemblyReferencesDependsOn>GetFrameworkPaths;AssignTargetPaths</ResolveAssemblyReferencesDependsOn>
1010
Name="ResolveAssemblyReferences"
1011
Condition="'@(Reference)@(NetAssemblyReference)@(ResolvedProjectReferencePaths)'!=''"
1012
DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)"
1014
<Message Text="(in) The list of all assembly references: '@(Reference);@(NetAssemblyReference)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1015
<Message Text="(in) The list of all project references: '@(ResolvedProjectReferencePaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1016
<Message Text="(in) Candidate assembly files from Content and None groups: '@(Content);@(None)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1017
<Message Text="(in) Search paths: $(AssemblySearchPaths)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1020
Only read and write cache file at build time, skip it for load time because its more
1021
expensive to write the newly created cache file.
1024
Value="$(IntermediateOutputPath)ResolveAssemblyReference.cache"
1025
Condition="'$(BuildingProject)'=='true'">
1027
<Output TaskParameter="Value" PropertyName="ResolveAssemblyReferencesStateFile" />
1032
Make an App.Config item that exists when AutoUnify is false.
1035
Include="@(AppConfigWithTargetPath)"
1036
Condition="'$(AutoUnifyAssemblyReferences)'=='false'">
1037
<Output TaskParameter="Include" ItemName="ApplicationConfigFileForExes" />
1040
<ResolveAssemblyReference
1041
Assemblies="@(Reference);@(NetAssemblyReference)"
1042
AssemblyFiles="@(ResolvedProjectReferencePaths)"
1043
TargetFrameworkDirectory="$(TargetFrameworkDirectory)"
1044
CandidateAssemblyFiles="@(Content);@(None)"
1045
SearchPaths="$(AssemblySearchPaths)"
1046
TargetProcessorArchitecture="$(ProcessorArchitecture)"
1047
AppConfigFile="@(ApplicationConfigFileForExes)"
1048
AutoUnify="$(AutoUnifyAssemblyReferences)"
1049
FindDependencies="$(BuildingProject)"
1050
FindSatellites="$(BuildingProject)"
1051
FindRelatedFiles="$(BuildingProject)"
1052
Silent="!$(BuildingProject)"
1053
StateFile="$(ResolveAssemblyReferencesStateFile)"
1056
<Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
1057
<Output TaskParameter="ResolvedDependencyFiles" ItemName="ReferenceDependencyPaths"/>
1058
<Output TaskParameter="RelatedFiles" ItemName="ReferenceRelatedPaths"/>
1059
<Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
1060
<Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
1061
<Output TaskParameter="SuggestedRedirects" ItemName="SuggestedBindingRedirects"/>
1063
</ResolveAssemblyReference>
1066
<Message Text="(out) Resolved paths to primary references: '@(ReferencePath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1067
<Message Text="(out) Files to be copied to the output directory: '@(ReferenceCopyLocalPaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1072
<ResolveReferencesDependsOn>
1073
ResolveNativeReferences;
1074
SplitProjectReferencesByType;
1075
ResolveProjectReferences;
1076
ResolveVCProjectReferences;
1077
ResolveAssemblyReferences;
1078
ResolveComReferences
1079
</ResolveReferencesDependsOn>
1082
Name="ResolveReferences"
1083
DependsOnTargets="$(ResolveReferencesDependsOn)"/>
1086
Compile .licx files (containing information about licensed controls used by the application) into .licenses files.
1089
@(LicxFile) - The list of .licx files in the project (usually there will be just one)
1092
@(CompiledLicenseFile) - The list of compiled .licenses files (there will be just one)
1095
<CompileLicxFilesDependsOn></CompileLicxFilesDependsOn>
1098
Name="CompileLicxFiles"
1099
Inputs="@(LicxFile);@(ReferencePath);@(ReferenceDependencyPaths)"
1100
Outputs="$(IntermediateOutputPath)$(TargetFileName).licenses"
1101
Condition="'@(LicxFile)'!=''"
1102
DependsOnTargets="$(CompileLicxFilesDependsOn)">
1104
<Message Text="(in) The list of .licx files: '@(LicxFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1107
Sources="@(LicxFile)"
1108
LicenseTarget="$(TargetFileName)"
1109
OutputDirectory="$(IntermediateOutputPath)"
1110
OutputLicenses="$(IntermediateOutputPath)$(TargetFileName).licenses"
1111
ReferencedAssemblies="@(ReferencePath);@(ReferenceDependencyPaths)">
1114
TaskParameter="OutputLicenses"
1115
ItemName="CompiledLicenseFile"/>
1118
<Message Text="(out) The list of .licenses files: '@(CompiledLicenseFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1124
Determine whether any XML manifests should be generated.
1125
XML manifests are required if the application has any native or reg-free COM references,
1126
or if the ClickOnce option is enabled.
1127
The purpose of the set of three targets below is to cause the GenerateManifests target
1128
to run if any of the following conditions are met:
1129
a) If one or more NativeReference or ResolvedIsolatedComModules items are present.
1130
b) If GenerateClickOnceManifests property is true.
1133
Name="BuildNativeManifest"
1134
Condition="'@(NativeReference)@(ResolvedIsolatedComModules)'!=''"
1135
DependsOnTargets="GenerateManifests"/>
1137
Name="BuildClickOnceManifests"
1138
Condition="'$(GenerateClickOnceManifests)'=='true'"
1139
DependsOnTargets="GenerateManifests"/>
1141
Name="BuildManifests"
1142
DependsOnTargets="BuildNativeManifest;BuildClickOnceManifests"/>
1146
Compute info for native manifest generation
1149
@(IntermediateAssembly) - Path to built assembly, used to obtain version for generated manifest.
1152
$(ManifestVersion) - Version of generated manifest.
1155
Name="ComputeNativeManifestInfo"
1156
Condition="'$(GenerateClickOnceManifests)'!='true'">
1158
<!-- Obtain manifest version from the built assembly -->
1159
<Message Text="(in) IntermediateAssembly: '@(IntermediateAssembly)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1160
<GetAssemblyIdentity AssemblyFiles="@(IntermediateAssembly)">
1161
<Output TaskParameter="Assemblies" ItemName="IntermediateAssemblyIdentity"/>
1162
</GetAssemblyIdentity>
1163
<Message Text="(out) IntermediateAssemblyIdentity: '@(IntermediateAssemblyIdentity)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1164
<CreateProperty Value="@(IntermediateAssemblyIdentity->'%(Version)')">
1165
<Output TaskParameter="Value" PropertyName="ManifestVersion"/>
1167
<Message Text="(out) ManifestVersion: '$(ManifestVersion)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1173
Compute info for ClickOnce manifest generation
1176
$(ApplicationVersion) - Application version, can be either 1.0.0.0 or 1.0.0.*.
1177
$(ApplicationRevision) - Application revision, used if ApplicationVersion is 1.0.0.*.
1178
$(TargetCulture) - Determines the set of sattelites to include in the manifest.
1179
@(BaseManifestWithTargetPath) - The base app.manifest from project.
1180
@(ReferencePath) - List of project references.
1181
@(ReferenceDependencyPaths) - List of dependent project references.
1182
$(IntermediateOutputPath) - Used to obtain debug symbols and documentation files for project.
1183
@(ReferenceRelatedPaths) - Used to obtain debug symbols and documentation files for dependent projects.
1184
@(Content) - Content files to include in manifest.
1185
@(PublishFile) - List that determines whether corresponding items are flagged in the manifest with attributes such as group, optional, etc.
1186
@(AppConfigWithTargetPath) - App config file, if present.
1187
@(ManifestIconFile) - Icon file, if present.
1188
@(SatelliteAssemblies) - List of satellites for project.
1189
@(ReferenceSatellitePaths) - List of satellites for dependent projects.
1190
$(TargetUrl) - Deployment provider url for manifest, required for all installed applications.
1191
$(SupportUrl) - Support url for manifest.
1194
@(ManifestDependencies) - List of assemblies to be expressed as dependencies in the manifest.
1195
@(ManifestEntryPoint) - Identifies the manifest that defines the entry point for the application.
1196
@(ManifestFiles) - List of files to be expressed in the manifest, including icon file and config file if present.
1197
@(ManifestPrerequisites) - List of assemblies to be expressed as prerequisites in the manifest.
1198
@(ManifestSatellites) - List of assemblies to be expressed as satellites in the manifest.
1199
$(ManifestVersion) - Version of generated manifest.
1200
$(FormattedTargetUrl) - Formatted version of corresponding input url.
1201
$(FormattedSupportUrl) - Formatted version of corresponding input url.
1204
Name="ComputeClickOnceManifestInfo"
1205
Condition="'$(GenerateClickOnceManifests)'=='true'"
1206
DependsOnTargets="AssignTargetPaths"
1209
<!-- Create list of items for manifest generation -->
1210
<Message Text="(in) BaseManifestWithTargetPath: '@(BaseManifestWithTargetPath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1211
<Message Text="(in) EntryPoint: '@(ManifestEntryPoint)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1212
<Message Text="(in) ReferencePath: '@(ReferencePath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1213
<Message Text="(in) ReferenceDependencyPaths: '@(ReferenceDependencyPaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1214
<Message Text="(in) Prerequisites: '@(ManifestPrerequisites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1215
<Message Text="(in) Satellites: '@(SatelliteAssemblies);@(ReferenceSatellitePaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1216
<Message Text="(in) Files: '@(Content)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1217
<Message Text="(in) ExtraFiles: '$(IntermediateOutputPath)$(TargetName).pdb;$(IntermediateOutputPath)$(TargetName).xml;@(ReferenceRelatedPaths)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1218
<Message Text="(in) PublishFiles: '@(PublishFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1219
<Message Text="(in) ManifestConfigFile: '@(AppConfigWithTargetPath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1220
<Message Text="(in) ManifestIconFile: '@(ManifestIconFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1221
<Message Text="(in) TargetCulture: '$(TargetCulture)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1222
<ResolveManifestFiles
1223
BaseManifest="@(BaseManifestWithTargetPath)"
1224
Dependencies="@(ReferencePath);@(ReferenceDependencyPaths)"
1225
EntryPoint="@(ManifestEntryPoint)"
1226
ExcludedPermissions="$(ExcludedPermissions)"
1227
ExtraFiles="$(IntermediateOutputPath)$(TargetName).pdb;$(IntermediateOutputPath)$(TargetName).xml;@(ReferenceRelatedPaths)"
1228
Files="@(ContentWithTargetPath);@(ManifestIconFile);@(AppConfigWithTargetPath)"
1229
PublishFiles="@(PublishFile)"
1230
Satellites="@(SatelliteAssemblies);@(ReferenceSatellitePaths)"
1231
TargetCulture="$(TargetCulture)"
1232
TargetZone="$(TargetZone)"
1233
TrustInfoFile="$(IntermediateOutputPath)TrustInfo.xml"
1235
<Output TaskParameter="OutputDependencies" ItemName="ManifestDependencies"/>
1236
<Output TaskParameter="OutputFiles" ItemName="ManifestFiles"/>
1237
<Output TaskParameter="OutputPrerequisites" ItemName="ManifestPrerequisites"/>
1238
<Output TaskParameter="OutputSatellites" ItemName="ManifestSatellites"/>
1239
<Output TaskParameter="OutputTrustInfoFile" PropertyName="TrustInfoFile" Condition="'$(TargetZone)'!=''"/>
1240
</ResolveManifestFiles>
1241
<Message Text="(out) ManifestDependencies: '@(ManifestDependencies)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1242
<Message Text="(out) ManifestFiles: '@(ManifestFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1243
<Message Text="(out) ManifestPrerequisites: '@(ManifestPrerequisites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1244
<Message Text="(out) ManifestSatellites: '@(ManifestSatellites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1245
<Message Text="(out) TrustInfoFile: '$(TrustInfoFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1247
<!-- Obtain manifest version from ApplicationVersion and ApplicationRevision properties -->
1248
<Message Text="(in) ApplicationVersion: '$(ApplicationVersion)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1249
<Message Text="(in) ApplicationRevision: '$(ApplicationRevision)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1251
Version="$(ApplicationVersion)"
1252
Revision="$(ApplicationRevision)"
1254
<Output TaskParameter="OutputVersion" PropertyName="ManifestVersion"/>
1256
<Message Text="(out) ManifestVersion: '$(ManifestVersion)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1258
<Message Text="(in) TargetUrl: '$(TargetUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1260
InputUrl="$(TargetUrl)"
1262
<Output TaskParameter="OutputUrl" PropertyName="FormattedTargetUrl"/>
1264
<Message Text="(out) FormattedTargetUrl: '$(FormattedTargetUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1266
<Message Text="(in) SupportUrl: '$(SupportUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1268
InputUrl="$(SupportUrl)"
1270
<Output TaskParameter="OutputUrl" PropertyName="FormattedSupportUrl"/>
1272
<Message Text="(out) FormattedSupportUrl: '$(FormattedSupportUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1281
@(BaseManifestWithTargetPath) - The base app.manifest from project.
1282
@(ResolvedIsolatedComModules) - The list of COM references to be isolated as reg-free COM dependencies for native assembly loader.
1283
@(NativeReferenceFile) - The list of native assembly dependencies for native assembly loader.
1284
@(ManifestFiles) - The list of loose files (content, pdb, xml, etc.) for ClickOnce.
1285
@(ManifestDependencies) - The list of application dependencies (typically this is the set of assembly dependencies in bin\) for ClickOnce.
1286
@(ManifestPrerequisites) - The list of application prerequisistes (typically this is the set of assembly dependencies not in bin\) for ClickOnce.
1287
@(ManifestSatellites) - The list of satellite assemblies for ClickOnce.
1288
@(AppConfigWithTargetPath) - App config file, if present.
1289
@(ManifestIconFile) - Icon file, if present.
1292
@(ApplicationManifest) - Generated native or ClickOnce application manifest, i.e. WindowsApplication1.exe.manifest
1293
@(DeployManifest) - Generated ClickOnce deployment manifest, i.e. WindowsApplication1.application
1296
Name="GenerateManifests"
1297
DependsOnTargets="ComputeNativeManifestInfo;ComputeClickOnceManifestInfo">
1299
<Message Text="(in) ApplicationManifestIdentitity: '$(ApplicationManifestIdentitity)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1300
<Message Text="(in) ApplicationManifest: '@(ApplicationManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1301
<Message Text="(in) BaseManifestWithTargetPath: '@(BaseManifestWithTargetPath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1302
<Message Text="(in) IsolatedComReferences: '@(ResolvedIsolatedComModules)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1303
<Message Text="(in) NativeReferenceFile: '@(NativeReferenceFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1304
<Message Text="(in) Files: '@(ManifestFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1305
<Message Text="(in) EntryPoint: '@(ManifestEntryPoint)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1306
<Message Text="(in) Dependencies: '@(ManifestDependencies)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1307
<Message Text="(in) Prerequisites: '@(ManifestPrerequisites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1308
<Message Text="(in) Satellites: '@(ManifestSatellites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1309
<Message Text="(in) ManifestConfigFile: '@(AppConfigWithTargetPath)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1310
<Message Text="(in) ManifestIconFile: '@(ManifestIconFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1311
<GenerateApplicationManifest
1312
AssemblyName="$(ApplicationManifestIdentitity)"
1313
AssemblyVersion="$(ManifestVersion)"
1314
ConfigFile="@(AppConfigWithTargetPath)"
1315
CertificateFile="$(CertificateFile)"
1316
CertificatePassword="$(CertificatePassword)"
1317
DelaySign="$(DelaySign)"
1318
Dependencies="@(ManifestDependencies)"
1319
Description="$(Description)"
1320
EntryPoint="@(ManifestEntryPoint)"
1321
FallbackCulture="$(FallbackCulture)"
1322
Files="@(ManifestFiles)"
1323
FXVersion="$(FXVersion)"
1324
IconFile="@(ManifestIconFile)"
1325
InputManifest="@(BaseManifestWithTargetPath)"
1326
IsolatedComReferences="@(ResolvedIsolatedComModules)"
1327
KeyContainer="$(ManifestKeyContainerName)"
1328
KeyFile="$(ManifestKeyOriginatorFile)"
1329
KeyProvider="$(KeyProviderName)"
1330
NativeReferences="@(NativeReferenceFile)"
1331
OutputManifest="@(ApplicationManifest)"
1332
OSVersion="$(TargetOSVersion)"
1333
Platform="$(PlatformTarget)"
1334
Prerequisites="@(ManifestPrerequisites)"
1335
Satellites="@(ManifestSatellites)"
1336
TargetCulture="$(TargetCulture)"
1337
TrustInfoFile="$(TrustInfoFile)"
1339
<Message Text="(out) ApplicationManifest: '@(ApplicationManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1341
<Message Text="(in) DeployManifestIdentitity: '$(DeployManifestIdentitity)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1342
<Message Text="(in) DeployManifest: '@(DeployManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1343
<GenerateDeploymentManifest
1344
Condition="'$(GenerateClickOnceManifests)'=='true'"
1345
AssemblyName="$(DeployManifestIdentitity)"
1346
AssemblyVersion="$(ManifestVersion)"
1347
CertificateFile="$(CertificateFile)"
1348
CertificatePassword="$(CertificatePassword)"
1349
DelaySign="$(DelaySign)"
1350
Description="$(Description)"
1351
EntryPoint="@(ApplicationManifest)"
1352
Install="$(Install)"
1353
KeyContainer="$(ManifestKeyContainerName)"
1354
KeyFile="$(ManifestKeyOriginatorFile)"
1355
KeyProvider="$(KeyProviderName)"
1356
OutputManifest="@(DeployManifest)"
1357
Platform="$(PlatformTarget)"
1358
Product="$(ProductName)"
1359
Publisher="$(PublisherName)"
1360
SupportUrl="$(FormattedSupportUrl)"
1361
TargetCulture="$(TargetCulture)"
1362
TargetUrl="$(FormattedTargetUrl)"
1363
TrustLicenses="@(TrustLicenses)"
1364
UpdateEnabled="$(UpdateEnabled)"
1365
UpdateInterval="$(UpdateInterval)"
1366
UpdateMode="$(UpdateMode)"
1367
UpdatePeriodically="$(UpdatePeriodically)"
1368
UpdateRequired="$(UpdateRequired)"
1369
UpdateUnit="$(UpdateIntervalUnits)"
1371
<Message Text="(out) DeployManifest: '@(DeployManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1373
<CreateProperty Value="true">
1374
<Output TaskParameter="Value" PropertyName="CopyApplicationManifest" />
1376
<Message Text="(out) CopyApplicationManifest: '$(CopyApplicationManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1382
Compute the paths to the intermediate satellite assemblies,
1383
with culture attributes so we can copy them to the right place
1386
Name="ComputeIntermediateSatelliteAssemblies"
1387
Condition="'@(ManifestResourceWithCulture)@(ManifestNonResxWithCultureOnDisk)'!=''"
1390
Include="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll"
1391
AddAttributeName="Culture"
1392
AddAttributeValue="%(Culture)"
1393
Condition="'@(ManifestResourceWithCulture)@(ManifestNonResxWithCulture)' != ''">
1395
<Output TaskParameter="Include" ItemName="IntermediateSatelliteAssemblies"/>
1400
Copy references that are marked as "CopyLocal" and their dependencies, including .pdbs, .xmls and satellites.
1403
Name="CopyCopyLocalFilesToOutputDirectory">
1406
SourceFiles="@(ReferenceCopyLocalPaths)"
1407
DestinationFiles="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)\%(Filename)%(Extension)')"
1408
SkipUnchangedFiles="true"
1414
Create a list of items that have the CopyToOutputDirectory attribute set to 'true'.
1417
Name="CreateCopyToOutputDirectoryItems"
1418
DependsOnTargets="AssignTargetPaths"
1420
<CreateItem Include="@(ContentWithTargetPath);@(EmbeddedResourceWithTargetPath);@(CompileWithTargetPath);@(NoneWithTargetPath)">
1421
<Output TaskParameter="Include" ItemName="AllItemsWithTargetPath"/>
1425
Include="@(AllItemsWithTargetPath)"
1426
Condition="'%(AllItemsWithTargetPath.CopyToOutputDirectory)'=='True'"
1429
<Output TaskParameter="Include" ItemName="CopyToOutputDirectoryFiles"/>
1435
Copy files that have the CopyToOutputDirectory attribute set to 'true'.
1438
Name="CopyCopyToOutputDirectoryFiles"
1439
Inputs="@(CopyToOutputDirectoryFiles)"
1440
Outputs="$(OutputPath)%(TargetPath)"
1441
DependsOnTargets="CreateCopyToOutputDirectoryItems"
1445
SourceFiles = "@(CopyToOutputDirectoryFiles)"
1446
DestinationFiles = "$(OutputPath)%(TargetPath)"
1452
Copy all build outputs, satellites and other necessary files to the final directory.
1455
Name="CopyFilesToOutputDirectory"
1456
DependsOnTargets="ComputeIntermediateSatelliteAssemblies;CopyCopyLocalFilesToOutputDirectory;CopyCopyToOutputDirectoryFiles">
1458
<!-- Copy the build product (.dll or .exe). -->
1460
SourceFiles="@(IntermediateAssembly)"
1461
DestinationFiles="$(OutDir)$(TargetFileName)"
1462
SkipUnchangedFiles="true"
1465
<Output ItemName="MainAssembly" TaskParameter="DestinationFiles" />
1468
<!-- Mini-clean. Delete the destination PDB from the last build. If DebugInformation
1469
has been turned off, then we may not end up copying a new PDB on top of it. -->
1470
<Delete Files="$(OutDir)$(TargetName).pdb"/>
1472
<!-- Copy the debug information file (.pdb), if any -->
1474
SourceFiles="$(IntermediateOutputPath)$(TargetName).pdb"
1475
DestinationFiles="$(OutDir)$(TargetName).pdb"
1476
SkipUnchangedFiles="true"
1477
Condition="Exists('$(IntermediateOutputPath)$(TargetName).pdb')"
1480
<!-- Copy the resulting XML documentation file, if any. -->
1482
SourceFiles="$(DocFile)"
1483
DestinationFiles="@(FinalDocFile)"
1484
SkipUnchangedFiles="true"
1485
Condition="Exists('$(DocFile)')"
1488
<!-- Copy the application's .config file, if any. -->
1490
SourceFiles="@(AppConfigWithTargetPath)"
1491
DestinationFiles="$(OutDir)%(TargetPath)"
1492
SkipUnchangedFiles="true"
1495
<!-- Copy satellite assemblies. -->
1497
SourceFiles="@(IntermediateSatelliteAssemblies)"
1498
DestinationFiles="@(IntermediateSatelliteAssemblies->'$(OutDir)%(Culture)\$(TargetName).resources.dll')"
1499
SkipUnchangedFiles="true"
1502
<!-- Copy COM reference wrappers if any. -->
1504
SourceFiles="@(ReferenceComWrappersToCopyLocal)"
1505
DestinationFolder="$(OutDir)"
1506
SkipUnchangedFiles="true"
1509
<!-- Copy isolated COM references, if any. -->
1511
SourceFiles="@(ResolvedIsolatedComModules)"
1512
DestinationFolder="$(OutDir)"
1513
SkipUnchangedFiles="true"
1516
<!-- Copy COM references included by native (manifest) references, if any. -->
1518
Condition="'@(LooseManifestFile)'!=''"
1519
SourceFiles="@(LooseManifestFile)"
1520
DestinationFolder="$(OutDir)"
1521
SkipUnchangedFiles="true"
1524
<!-- Copy native (manifest) reference files themselves, if any. -->
1526
Condition="'@(NativeReferenceFile)'!=''"
1527
SourceFiles="@(NativeReferenceFile)"
1528
DestinationFolder="$(OutDir)"
1529
SkipUnchangedFiles="true"
1532
<!-- Copy the built manifests (.exe.manifest, .application) to the final directory. -->
1534
Condition="'$(CopyApplicationManifest)'=='true'"
1535
SourceFiles="@(ApplicationManifest)"
1536
DestinationFolder="$(OutDir)"
1537
SkipUnchangedFiles="true"
1540
Condition="'$(GenerateClickOnceManifests)'=='true'"
1541
SourceFiles="@(DeployManifest)"
1542
DestinationFolder="$(OutDir)"
1543
SkipUnchangedFiles="true"
1550
Delete the empty source file if one was created at the start of the build.
1553
Name="RemoveEmptyGeneratedSource"
1554
Condition="Exists('$(IntermediateOutputPath)VisualStudio.Empty$(DefaultLanguageSourceExtension)')"
1558
Files="$(IntermediateOutputPath)VisualStudio.Empty$(DefaultLanguageSourceExtension)"/>
1563
<UnmanagedRegistrationDependsOn></UnmanagedRegistrationDependsOn>
1566
Name="UnmanagedRegistration"
1567
Condition="'$(RegisterForComInterop)_and_$(OutputType)'=='true_and_library'"
1568
DependsOnTargets="$(UnmanagedRegistrationDependsOn)"
1572
Assemblies="@(OutputPathItem->'%(FullPath)$(TargetFileName)')"
1573
TypeLibFiles="@(OutputPathItem->'%(FullPath)$(TargetName).tlb')"
1574
CreateCodeBase="true"
1581
Condition="'$(RunFxCop)'=='true'"
1582
Inputs="$(IntermediateOutputPath)$(TargetName)$(TargetExt)"
1583
Outputs="$(IntermediateOutputPath)FxCopLog.xml;$(IntermediateOutputPath)$(TargetName).FxCop"
1584
DependsOnTargets="Compile"
1587
ToolPath="$(FxCopDir)"
1588
Assemblies="$(IntermediateOutputPath)$(TargetName)$(TargetExt)"
1589
Rules="$(FxCopRules)"
1590
SynthesizedProject="$(IntermediateOutputPath)$(TargetName).FxCop"
1591
LogFile="$(IntermediateOutputPath)FxCopLog.xml"
1592
ExclusionsFile="$(FxCopExclusionsFile)"
1597
Run the post-build event if there is one.
1600
<PostBuildEventDependsOn></PostBuildEventDependsOn>
1603
Name="PostBuildEvent"
1604
Condition="'$(PostBuildEvent)'!=''"
1605
DependsOnTargets="$(PostBuildEventDependsOn)"
1609
WorkingDirectory="$(OutDir)"
1610
Command="$(PostBuildEvent)" />
1615
Prepare the names of resource files.
1618
<PrepareResourceNamesDependsOn>
1619
SplitResourcesByCulture;CreateManifestResourceNames
1620
</PrepareResourceNamesDependsOn>
1623
Name="PrepareResourceNames"
1624
DependsOnTargets="$(PrepareResourceNamesDependsOn)"
1628
Prepare resources for the Compile step.
1631
<PrepareResourcesDependsOn>
1632
PrepareResourceNames;CopyNonResxEmbeddedResources;ResGen;CompileLicxFiles
1633
</PrepareResourcesDependsOn>
1636
Name="PrepareResources"
1637
DependsOnTargets="$(PrepareResourcesDependsOn)"
1641
Copy the build outputs to the final directory if they have changed.
1644
<PrepareForRunDependsOn>
1645
RemoveEmptyGeneratedSource;
1646
CopyFilesToOutputDirectory
1647
</PrepareForRunDependsOn>
1650
Name="PrepareForRun"
1651
DependsOnTargets="$(PrepareForRunDependsOn)"
1655
Delete all intermediate and final build outputs.
1659
PrepareResourceNames;
1660
UnmanagedUnregistration
1665
DependsOnTargets="$(CleanDependsOn)"
1670
"$(OutDir)$(TargetFileName).config;
1671
$(OutDir)$(TargetFileName);
1672
$(OutDir)$(TargetName).pdb;
1674
$(IntermediateOutputPath)$(TargetFileName);
1675
$(IntermediateOutputPath)$(TargetName).pdb;
1676
@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)');
1677
@(ManifestNonResxWithCulture->'$(IntermediateOutputPath)%(Identity)');
1678
@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources');
1679
@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources');
1681
$(IntermediateOutputPath)ResolveAssemblyReference.cache;
1682
$(IntermediateOutputPath)ResGen.cache;
1683
$(IntermediateOutputPath)$(TargetFileName).licenses"
1688
"$(OutDir)%(ManifestNonResxWithCulture.Culture)\$(TargetName).resources.dll;
1689
$(IntermediateOutputPath)%(ManifestNonResxWithCulture.Culture)\$(TargetName).resources.dll"
1694
"$(OutDir)%(ManifestResourceWithCultureName.Culture)\$(TargetName).resources.dll;
1695
$(IntermediateOutputPath)%(ManifestResourceWithCultureName.Culture)\$(TargetName).resources.dll"
1701
Delete all intermediate and final build outputs.
1711
DependsOnTargets="$(RebuildDependsOn)"
1715
This stand-alone target returns the name of the build product (i.e. EXE, DLL)
1716
that would be produced if we built this project.
1719
Name="MainBuiltProjectOutputGroup"
1720
Outputs="$(TargetPath)"
1724
Dump the names of certain important properties.
1727
Name="DumpSpecialMacros"
1728
Condition="'$(MSBuildTargetsVerbose)'=='true'"
1731
<Message Text="ConfigurationName =$(ConfigurationName)"/>
1732
<Message Text="DevEnvDir =$(DevEnvDir)"/>
1733
<Message Text="OutDir =$(OutDir)"/>
1734
<Message Text="PlatformName =$(PlatformName)"/>
1735
<Message Text="ProjectExt =$(ProjectExt)"/>
1736
<Message Text="ProjectFileName =$(ProjectFileName)"/>
1737
<Message Text="ProjectName =$(ProjectName)"/>
1738
<Message Text="SolutionDir =$(SolutionDir)"/>
1739
<Message Text="SolutionExt =$(SolutionExt)"/>
1740
<Message Text="SolutionFileName =$(SolutionFileName)"/>
1741
<Message Text="SolutionName =$(SolutionName)"/>
1742
<Message Text="SolutionPath =$(SolutionPath)"/>
1743
<Message Text="TargetExt =$(TargetExt)"/>
1744
<Message Text="TargetFileName =$(TargetFileName)"/>
1745
<Message Text="TargetName =$(TargetName)"/>
1746
<Message Text="MSBuildAllProjects =$(MSBuildAllProjects)"/>
1747
<Message Text="FxCopDir =$(FxCopDir)"/>
1749
<Message Text="ProjectDir"/>
1750
<Message Text="$(ProjectDir)"/>
1751
<Message Text="ProjectPath"/>
1752
<Message Text="$(ProjectPath)"/>
1753
<Message Text="TargetDir"/>
1754
<Message Text="$(TargetDir)"/>
1755
<Message Text="TargetPath"/>
1756
<Message Text="$(TargetPath)"/>
1761
<PublishDependsOn Condition="'$(PublishDependsOn)'==''">Build</PublishDependsOn>
1765
DependsOnTargets="$(PublishDependsOn)"
1768
<!-- Copy manifest files -->
1769
<Message Text="(in) ApplicationManifest: '@(ApplicationManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1770
<Message Text="(in) ManifestEntryPoint: '@(ManifestEntryPoint)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1771
<Message Text="(in) ManifestDependencies: '@(ManifestDependencies)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1772
<Message Text="(in) ManifestSatellites: '@(ManifestSatellites)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1773
<Message Text="(in) ManifestFiles: '@(ManifestFiles)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1775
SourceFiles="@(ManifestEntryPoint);
1776
@(ManifestDependencies);
1778
@(ApplicationManifest);
1779
@(ManifestSatellites)"
1780
DestinationFiles="$(PublishDir)$(AssemblyName)_$(ManifestVersion)\%(TargetPath)"
1781
SkipUnchangedFiles="true"
1784
<!-- Copy COM files -->
1785
<Message Text="(in) @(ReferenceComWrappersToCopyLocal): '@(ReferenceComWrappersToCopyLocal)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1786
<Message Text="(in) @(ResolvedIsolatedComModules): '@(ResolvedIsolatedComModules)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1787
<Message Text="(in) @(NativeReferenceFile): '@(NativeReferenceFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1788
<Message Text="(in) @(LooseManifestFile): '@(LooseManifestFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1790
SourceFiles="@(ReferenceComWrappersToCopyLocal);@(ResolvedIsolatedComModules);@(NativeReferenceFile);@(LooseManifestFile)"
1791
DestinationFolder="$(PublishDir)$(AssemblyName)_$(ManifestVersion)"
1792
SkipUnchangedFiles="true"
1795
<!-- Update entry point path in deploy manifest and resign -->
1796
<Message Text="(in) DeployManifest: '@(DeployManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1798
ApplicationPath="$(AssemblyName)_$(ManifestVersion)\$(TargetApplicationManifestFileName)"
1799
CertificateFile="$(CertificateFile)"
1800
CertificatePassword="$(CertificatePassword)"
1801
DelaySign="$(DelaySign)"
1802
InputManifest="@(DeployManifest)"
1803
KeyContainer="$(ManifestKeyContainerName)"
1804
KeyFile="$(ManifestKeyOriginatorFile)"
1805
KeyProvider="$(KeyProviderName)"
1806
OutputManifest="$(PublishDir)$(TargetDeployManifestFileName)"
1808
<Output TaskParameter="OutputManifest" ItemName="PublishedDeployManifest"/>
1810
<Message Text="(out) PublishedDeployManifest: '$(PublishedDeployManifest)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1812
<Message Text="(in) ApplicationUrl: '$(ApplicationUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1814
InputUrl="$(ApplicationUrl)"
1816
<Output TaskParameter="OutputUrl" PropertyName="FormattedApplicationUrl"/>
1818
<Message Text="(out) FormattedApplicationUrl: '$(FormattedApplicationUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1820
<Message Text="(in) ComponentsUrl: '$(ComponentsUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1822
InputUrl="$(ComponentsUrl)"
1824
<Output TaskParameter="OutputUrl" PropertyName="FormattedComponentsUrl"/>
1826
<Message Text="(out) FormattedComponentsUrl: '$(FormattedComponentsUrl)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1828
<!-- Build setup.exe bootstrapper and copy referenced packages -->
1829
<Message Text="(in) BootstrapperFile: '@(BootstrapperFile)'" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
1830
<GenerateBootstrapper
1831
Condition="'$(BootstrapperEnabled)'=='true'"
1832
ApplicationFile="$(TargetDeployManifestFileName)"
1833
ApplicationName="$(AssemblyName)"
1834
ApplicationUrl="$(FormattedApplicationUrl)"
1835
BootstrapperItems="@(BootstrapperFile)"
1836
ComponentsUrl="$(FormattedComponentsUrl)"
1837
Culture="$(TargetCulture)"
1838
FallbackCulture="$(FallbackCulture)"
1839
OutputPath="$(PublishDir)"/>
1844
If post-built events are set to fire "OnOutputUpdated" then take before
1845
and after timestamps so that we can compare them.
1848
Name="TimeStampBeforeCompile"
1849
Condition="'$(RunPostBuildEvent)'=='OnOutputUpdated'"
1852
<CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
1853
<Output TaskParameter="Include" ItemName="IntermediateAssemblyBeforeTimeStamp"/>
1858
Name="TimeStampAfterCompile"
1859
Condition="'$(RunPostBuildEvent)'=='OnOutputUpdated'"
1862
<CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
1863
<Output TaskParameter="Include" ItemName="IntermediateAssemblyAfterTimeStamp"/>
1867
<Target Name="ObjectRelationalValidator"
1868
Condition=" '@(MappingSchemaFile)@(EmbeddedMappingSchemaFile)' != '' "
1869
DependsOnTargets="AssignTargetPaths"
1871
<Microsoft.VisualStudio.EnterpriseTools.MappingTool.CompileTime.ObjectRelationalValidator
1872
ProjectReferences="@(ReferencePath)"
1873
ProjectTarget="$(TargetPath)"
1874
MappingSchemaFiles="@(MappingSchemaFile);@(EmbeddedMappingSchemaFile)"
1875
ProjectDirectory="$(ProjectDir)"
1881
Run the final build output.
1884
<RunDependsOn></RunDependsOn>
1888
DependsOnTargets="$(RunDependsOn)"
1890
<Error Text="Cannot run '$(TargetPath)' because project output type is not '.exe'" Condition="'$(TargetExt)'!='.exe'"/>
1891
<Exec Command="$(TargetPath)"/>
1895
The core build step calls each of the build targets.
1898
<CoreBuildDependsOn>
1902
UnmanagedUnregistration;
1906
TimeStampBeforeCompile;
1908
TimeStampAfterCompile;
1909
CreateSatelliteAssemblies;
1912
ObjectRelationalValidator;
1913
UnmanagedRegistration;
1916
</CoreBuildDependsOn>
1920
DependsOnTargets="$(CoreBuildDependsOn)"
1923
<OnError Condition="'$(RunPostBuildEvent)'=='Always'" ExecuteTargets="PostBuildEvent"/>
1924
<OnError ExecuteTargets="PostBuildOnOutputChange"/>
1929
The following targets are needed to support post-build. These steps are driven by two parameters.
1931
(1) The $(RunPostBuildEvent) property is set by the user through VS and can be one of four values.
1933
- OnBuildSuccess: In this case, every step of the build must succeed for the post-build step to run.
1934
- <Blank>: This is the same as OnBuildSuccess.
1935
- OnOutputUpdated: In this case, the post-build step will run only if the main output assembly was
1937
- Always: The post-build step is always run.
1939
(2) The @(IntermediateAssemblyBeforeTimeStamp) and @(IntermediateAssemblyAfterTimeStamp) values are
1940
set by the TimeStampBeforeCompile and TimeStampAfterCompile targets. If the assembly was actually
1941
rebuilt during this build, then the two values will be different.
1944
Name="PostBuildOnSuccess"
1945
Condition="'$(RunPostBuildEvent)'!='OnOutputUpdated'"
1946
DependsOnTargets="PostBuildEvent"/>
1949
Name="PostBuildOnOutputChangeCheckTimestamps"
1950
Condition="'@(IntermediateAssemblyBeforeTimeStamp)'!='@(IntermediateAssemblyAfterTimeStamp)'"
1951
DependsOnTargets="PostBuildEvent"/>
1954
Name="PostBuildOnOutputChange"
1955
Condition="'$(RunPostBuildEvent)'=='OnOutputUpdated'"
1956
DependsOnTargets="PostBuildOnOutputChangeCheckTimestamps"/>
1959
Name="CoreBuildSucceeded"
1960
DependsOnTargets="PostBuildOnSuccess;PostBuildOnOutputChange"/>
1963
This target is used by the UpToDateCheck target in order to compute the
1964
list of satellite assemblies that will be built by this project.
1966
<Target Name="ComputeSatelliteAssemblies"
1967
DependsOnTargets="PrepareResourceNames">
1970
Include="$(OutDir)%(Culture)\$(TargetName).resources.dll"
1971
Condition="'@(ResxWithCulture)@(NonResxWithCulture)' != ''">
1973
<Output TaskParameter="Include" ItemName="SatelliteAssembly"/>
1979
ResX files can contain "linked" items which are not necessairly listed
1980
as items in the project. This target, used by the UpToDateCheck target,
1981
collects all such files so that we can do timestamp checking on them.
1983
<Target Name="GetLinkedFilesFromResX"
1984
DependsOnTargets="PrepareResourceNames">
1986
<GetLinkedFilesFromResX
1987
StateFile="$(IntermediateOutputPath)ResGen.cache"
1988
UseSourcePath="$(UseSourcePath)"
1989
Sources="@(ResxWithCulture);@(ResxWithNoCulture)"
1990
Condition="'@(ResxWithCulture)@(ResxWithNoCulture)' != ''">
1992
<Output TaskParameter="LinkedFiles" ItemName="LinkedResXFiles" />
1994
</GetLinkedFilesFromResX>
1999
This target performs an up-to-date check on behalf of the IDE. The target
2000
performs timestamp checking of all known inputs against all known outputs.
2002
This target will copy referenced assemblies into the output directory if
2003
they are not already there.
2005
<Target Name="UpToDateCheck"
2007
@(EmbeddedResource);
2011
$(MSBuildAllProjects);
2012
$(MSBuildProjectFullPath).user;
2014
@(ResolvedProjectReferencePaths);
2016
$(AssemblyOriginatorKeyFile)"
2017
Outputs="$(TargetPath);@(SatelliteAssembly)"
2018
DependsOnTargets="BuildOnlySettings;
2020
ComputeSatelliteAssemblies;
2021
GetLinkedFilesFromResX;
2022
CopyCopyLocalFilesToOutputDirectory;
2025
<CreateProperty Value="false">
2026
<Output PropertyName="UpToDate" TaskParameter="ValueSetByTask"/>
2031
The targets below drive output groups, which provide generic information about a
2032
project's inputs (e.g., content files, compilation sources, etc.) and built outputs
2033
(e.g., built EXE/DLL, PDB, XML documentation files, etc.)
2035
Each target may produce two kinds of items: outputs and dependencies. Outputs are
2036
items from the current project; dependencies are items that are brought into the
2037
current project as a result of referencing other projects or components.
2039
Output items must be named "{TargetName}Output". Dependency items must be named
2040
"{TargetName}Dependency". For both outputs and dependencies, the Include attribute
2041
specifies the location of the output/dependency; it must be a full path. Any number
2042
of additional attributes may be placed on an output/dependency item.
2046
This target performs population of the Built project output group.
2048
<Target Name="PrepareForProjectBuiltOutputGroupPopulation">
2049
<MakeDir Directories="$(IntermediateOutputPath)"/>
2053
<BuiltProjectOutputGroupMainOutput1 Include="@(IntermediateAssembly->'%(FullPath)')">
2054
<IsKeyOutput>true</IsKeyOutput>
2055
<InProject>false</InProject>
2056
</BuiltProjectOutputGroupMainOutput1>
2059
<Target Name="BuiltProjectOutputGroup"
2060
DependsOnTargets="PrepareForProjectBuiltOutputGroupPopulation"
2061
Outputs="@(BuiltProjectOutputGroupOutput->'%(FullPath)')"
2064
<!-- This item represents the main built output -->
2065
<CreateItem Include="@(BuiltProjectOutputGroupMainOutput1)" AddAttributeName="OUTPUTLOC" AddAttributeValue="$(TargetPath)">
2066
<Output ItemName="BuiltProjectOutputGroupMainOutput2" TaskParameter="Include"/>
2069
<CreateItem Include="@(BuiltProjectOutputGroupMainOutput2)" AddAttributeName="TargetPath" AddAttributeValue="$(TargetFileName)">
2070
<Output ItemName="BuiltProjectOutputGroupMainOutput3" TaskParameter="Include"/>
2073
<CreateItem Include="@(BuiltProjectOutputGroupMainOutput3)" AddAttributeName="COM2REG" AddAttributeValue="true"
2074
Condition="'$(RegisterForComInterop)_and_$(OutputType)'=='true_and_library'">
2075
<Output ItemName="BuiltProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2078
<CreateItem Include="@(BuiltProjectOutputGroupMainOutput3)"
2079
Condition="'$(RegisterForComInterop)_and_$(OutputType)'!='true_and_library'">
2080
<Output ItemName="BuiltProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2083
<!-- This item represents the app.config file -->
2084
<CreateItem Include="@(AppConfigWithTargetPath)" AddAttributeName="OUTPUTLOC" AddAttributeValue="$(TargetDir)%(TargetPath)">
2085
<Output ItemName="BuiltProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2088
<!-- This item represents the native manifest, example: WindowsApplication1.exe.manifest or Native.ClassLibrary1.manifest -->
2089
<CreateItem Include="@(COMReference)"
2090
Condition=" '%(COMReference.Isolated)' == 'true' ">
2092
<Output ItemName="IsolatedComReference" TaskParameter="Include"/>
2095
<CreateItem Include="$(OutDir)$(TargetApplicationManifestFileName)"
2096
AddAttributeName="TargetPath" AddAttributeValue="$(TargetApplicationManifestFileName)"
2097
Condition="'@(NativeReference)@(IsolatedComReference)'!=''">
2098
<Output ItemName="BuiltProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2101
<!-- Convert intermediate items into final items; this way we can get the full path for each item -->
2102
<CreateItem Include="@(BuiltProjectOutputGroupOutputIntermediate->'%(FullPath)')">
2103
<Output ItemName="BuiltProjectOutputGroupOutput" TaskParameter="Include"/>
2106
<Message Text="Built Output Group Outputs: @(BuiltProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2112
This target performs population of the Debug Symbols project output group.
2115
Name="DebugSymbolsProjectOutputGroup"
2116
Outputs="@(DebugSymbolsProjectOutputGroupOutput->'%(FullPath)')"
2117
Condition="'$(DebugSymbols)'!='false'">
2119
<!-- This item represents the PDB built by the project -->
2121
<CreateItem Include="$(IntermediateOutputPath)$(TargetName).pdb" AddAttributeName="OUTPUTLOC" AddAttributeValue="@(OutputPathItem->'%(FullPath)$(TargetName).pdb')">
2122
<Output ItemName="DebugSymbolsProjectOutputGroup1" TaskParameter="Include"/>
2125
<CreateItem Include="@(DebugSymbolsProjectOutputGroup1)" AddAttributeName="TargetPath" AddAttributeValue="$(TargetName).pdb">
2126
<Output ItemName="DebugSymbolsProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2129
<!-- Convert intermediate items into final items; this way we can get the full path for each item -->
2130
<CreateItem Include="@(DebugSymbolsProjectOutputGroupOutputIntermediate->'%(FullPath)')">
2131
<Output ItemName="DebugSymbolsProjectOutputGroupOutput" TaskParameter="Include"/>
2134
<Message Text="Debug Symbols Output Group Outputs: @(DebugSymbolsProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2139
This target performs population of the Documentation project output group.
2142
<DocumentationProjectOutputGroup1 Include="$(DocFile)" Condition="'$(DocumentationFile)'!=''">
2143
<IsKeyOutput>true</IsKeyOutput>
2144
<InProject>false</InProject>
2145
</DocumentationProjectOutputGroup1>
2149
Name="DocumentationProjectOutputGroup"
2150
Outputs="@(DocumentationProjectOutputGroupOutput->'%(FullPath)')"
2151
Condition="'$(DocumentationFile)'!=''">
2153
<!-- This item represents the XML file built by the project -->
2154
<CreateItem Include="@(DocumentationProjectOutputGroup1)" AddAttributeName="OUTPUTLOC" AddAttributeValue="@(FinalDocFile)">
2155
<Output ItemName="DocumentationProjectOutputGroup2" TaskParameter="Include"/>
2158
<CreateItem Include="@(DocumentationProjectOutputGroup2)" AddAttributeName="TargetPath" AddAttributeValue="@(DocFileItem->'%(Filename)%(Extension)')">
2159
<Output ItemName="DocumentationProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2162
<!-- Convert intermediate items into final items; this way we can get the full path for each item -->
2163
<CreateItem Include="@(DocumentationProjectOutputGroupOutputIntermediate->'%(FullPath)')">
2164
<Output ItemName="DocumentationProjectOutputGroupOutput" TaskParameter="Include"/>
2167
<Message Text="Documentation Outputs: @(DocumentationProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2172
This target performs population of the Satellite Files project output group.
2175
Name="SatelliteDllsProjectOutputGroup"
2176
DependsOnTargets="PrepareResourceNames"
2177
Outputs="@(SatelliteDllsProjectOutputGroupOutput->'%(FullPath)')">
2180
Include="$(IntermediateOutputPath)%(ResxWithCulture.Culture)\$(TargetName).resources.dll"
2181
AddAttributeName="TargetPath"
2182
AddAttributeValue="%(ResxWithCulture.Culture)\$(TargetName).resources.dll"
2183
Condition="'@(ResxWithCulture)' != ''">
2185
<Output ItemName="SatelliteDllsProjectOutputGroupOutputIntermediate" TaskParameter="Include" />
2189
Include="$(IntermediateOutputPath)%(NonResxWithCulture.Culture)\$(TargetName).resources.dll"
2190
AddAttributeName="TargetPath"
2191
AddAttributeValue="%(NonResxWithCulture.Culture)\$(TargetName).resources.dll"
2192
Condition="'@(NonResxWithCulture)' != ''">
2194
<Output ItemName="SatelliteDllsProjectOutputGroupOutputIntermediate" TaskParameter="Include" />
2197
<CreateItem Include="$(IntermediateOutputPath)">
2198
<Output ItemName="SatelliteDllsProjectOutputGroupRootRelativeUrlBaseIntermediate" TaskParameter="Include"/>
2201
<!-- Convert intermediate items into final items; this way we can get the full path for each item. -->
2202
<CreateItem Include="@(SatelliteDllsProjectOutputGroupOutputIntermediate->'%(FullPath)')">
2203
<Output ItemName="SatelliteDllsProjectOutputGroupOutput" TaskParameter="Include"/>
2206
<Message Text="SatelliteDlls Outputs: @(SatelliteDllsProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2211
This target performs population of the Content Files project output group.
2212
Content files are items in the project whose type is "Content".
2215
Name="ContentFilesProjectOutputGroup"
2216
Outputs="@(ContentFilesProjectOutputGroupOutput->'%(FullPath)')"
2217
DependsOnTargets="AssignTargetPaths">
2219
<!-- Convert items into final items; this way we can get the full path for each item. -->
2220
<CreateItem Include="@(ContentWithTargetPath->'%(FullPath)')">
2221
<Output ItemName="ContentFilesProjectOutputGroupOutput" TaskParameter="Include"/>
2224
<Message Text="Content Files Outputs: @(ContentFilesProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2229
This target performs population of the Source Files project output group.
2230
Source files are items in the project whose type is "Compile" and "EmbeddedResource".
2232
Note: the source files output group also includes the project file as well
2233
as the Application Config File - but only provided that the application configuration
2234
file's type is "None".
2237
Name="SourceFilesProjectOutputGroup"
2238
Outputs="@(SourceFilesProjectOutputGroupOutput->'%(FullPath)')">
2240
<!-- First we deal with Compile, EmbeddedResource and AppConfig -->
2241
<CreateItem Include="@(CompileWithTargetPath);@(EmbeddedResourceWithTargetPath);@(AppConfigWithTargetPath)">
2242
<Output ItemName="SourceFilesProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2245
<!-- Include the project file -->
2246
<CreateItem Include="$(ProjectPath)" AddAttributeName="TargetPath" AddAttributeValue="$(ProjectFileName)">
2247
<Output ItemName="SourceFilesProjectOutputGroupOutputIntermediate" TaskParameter="Include"/>
2250
<!-- Convert intermediate items into final items; this way we can get the full path for each item -->
2251
<CreateItem Include="@(SourceFilesProjectOutputGroupOutputIntermediate->'%(FullPath)')">
2252
<Output ItemName="SourceFilesProjectOutputGroupOutput" TaskParameter="Include"/>
2255
<Message Text="Source Files Outputs: @(SourceFilesProjectOutputGroupOutput)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2259
<Target Name="AllProjectOutputGroups"
2260
DependsOnTargets="BuiltProjectOutputGroup;DebugSymbolsProjectOutputGroup;
2261
DocumentationProjectOutputGroup;SatelliteDllsProjectOutputGroup;
2262
SourceFilesProjectOutputGroup;ContentFilesProjectOutputGroup"/>
2265
This target performs population of the Built project output group dependencies.
2267
<Target Name="BuiltProjectOutputGroupDependencies"
2268
DependsOnTargets="ResolveReferences"
2269
Outputs="@(BuiltProjectOutputGroupDependency->'%(FullPath)')"
2272
<!-- This item represents dependencies (resolved references) -->
2274
<CreateItem Include="@(ReferencePath->'%(FullPath)');@(ReferenceDependencyPaths->'%(FullPath)')">
2275
<Output ItemName="BuiltProjectOutputGroupDependency" TaskParameter="Include"/>
2278
<CreateItem Include="@(NativeReferenceFile->'%(FullPath)')">
2279
<Output ItemName="BuiltProjectOutputGroupDependency" TaskParameter="Include"/>
2282
<CreateItem Include="@(LooseManifestFile->'%(FullPath)')">
2283
<Output ItemName="BuiltProjectOutputGroupDependency" TaskParameter="Include"/>
2286
<CreateItem Include="@(ResolvedIsolatedComModules->'%(FullPath)')">
2287
<Output ItemName="BuiltProjectOutputGroupDependency" TaskParameter="Include"/>
2290
<Message Text="Built Output Group Dependencies: @(BuiltProjectOutputGroupDependency)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2295
This target performs population of the dependencies for the debug symbols project output group.
2298
Name="DebugSymbolsProjectOutputGroupDependencies"
2299
DependsOnTargets="ResolveReferences"
2300
Outputs="@(DebugSymbolsProjectOutputGroupDependency->'%(FullPath)')"
2301
Condition="'$(DebugSymbols)'!='false'">
2303
<!-- This item represents dependent PDB's -->
2305
<CreateItem Include="@(ReferenceRelatedPaths)" Condition="'%(Extension)' == '.pdb'">
2306
<Output ItemName="DebugSymbolsProjectOutputGroupDependencyIntermediate" TaskParameter="Include"/>
2310
<CreateItem Include="@(DebugSymbolsProjectOutputGroupDependencyIntermediate->'%(FullPath)')">
2311
<Output ItemName="DebugSymbolsProjectOutputGroupDependency" TaskParameter="Include"/>
2314
<Message Text="Debug Symbols Output Group Dependencies: @(DebugSymbolsProjectOutputGroupDependency)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2319
This target performs population of the dependencies for the satellite files project output group.
2322
Name="SatelliteDllsProjectOutputGroupDependencies"
2323
DependsOnTargets="ResolveReferences"
2324
Outputs="@(SatelliteDllsProjectOutputGroupDependency->'%(FullPath)')">
2326
<!-- This item represents dependent satellites -->
2328
<CreateItem Include="@(ReferenceSatellitePaths->'%(FullPath)')">
2329
<Output ItemName="SatelliteDllsProjectOutputGroupDependency" TaskParameter="Include"/>
2332
<Message Text="SatelliteDlls Dependencies: @(SatelliteDllsProjectOutputGroupDependency)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2336
This target performs population of the dependencies for the documentation project output group.
2339
Name="DocumentationProjectOutputGroupDependencies"
2340
DependsOnTargets="ResolveReferences"
2341
Outputs="@(DocumentationProjectOutputGroupDependency->'%(FullPath)')"
2342
Condition="'$(DocumentationFile)'!=''">
2344
<!-- This item represents dependent XML's -->
2346
<CreateItem Include="@(ReferenceRelatedPaths)" Condition="'%(Extension)' == '.xml'">
2347
<Output ItemName="DocumentationProjectOutputGroupDependencyIntermediate" TaskParameter="Include"/>
2350
<!-- Convert intermediate items into final items; this way we can get the full path for each item -->
2352
<CreateItem Include="@(DocumentationProjectOutputGroupDependencyIntermediate->'%(FullPath)')">
2353
<Output ItemName="DocumentationProjectOutputGroupDependency" TaskParameter="Include"/>
2356
<Message Text="Documentation Dependencies: @(DocumentationProjectOutputGroupDependency)" Condition="'$(MSBuildTargetsVerbose)'=='true'"/>
2360
<Target Name="AllProjectOutputGroupsDependencies"
2361
DependsOnTargets="BuildOnlySettings;BuiltProjectOutputGroupDependencies;DebugSymbolsProjectOutputGroupDependencies;
2362
SatelliteDllsProjectOutputGroupDependencies;DocumentationProjectOutputGroupDependencies"/>