forked from dotnet/corefx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathResources.targets
83 lines (71 loc) · 4.4 KB
/
Resources.targets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ResourcesSourceFileExtension Condition="'$(MSBuildProjectExtension)' == '.csproj'">.cs</ResourcesSourceFileExtension>
<ResourcesSourceFileExtension Condition="'$(MSBuildProjectExtension)' == '.vbproj'">.vb</ResourcesSourceFileExtension>
<StringResourcesPath Condition="'$(StringResourcesPath)'=='' And Exists('$(MSBuildProjectDirectory)/Resources/Strings.resx')">$(MSBuildProjectDirectory)/Resources/Strings.resx</StringResourcesPath>
<StringResourcesNamespace Condition="'$(StringResourcesNamespace)' == ''">System</StringResourcesNamespace>
<StringResourcesClassName Condition="'$(StringResourcesClassName)' == ''">SR</StringResourcesClassName>
<StringResourcesName Condition="'$(StringResourcesName)' == ''">FxResources.$(AssemblyName).$(StringResourcesClassName)</StringResourcesName>
<!-- We define our own implementation of GetResourceString -->
<GenerateResxSourceOmitGetResourceString>true</GenerateResxSourceOmitGetResourceString>
<!-- For debug builds we include the full value string so that we get actual resources, even in the case the toolchain strips the resources file -->
<GenerateResxSourceIncludeDefaultValues Condition="'$(ConfigurationGroup)' == 'Debug'">true</GenerateResxSourceIncludeDefaultValues>
</PropertyGroup>
<!-- Include files under StringResourcesPath by convention unless OmitResources is set. -->
<ItemGroup Condition="'$(StringResourcesPath)'!='' AND '$(OmitResources)'!='true'">
<EmbeddedResource Include="$(StringResourcesPath)">
<Visible>true</Visible>
<ManifestResourceName>$(StringResourcesName)</ManifestResourceName>
<GenerateSource>true</GenerateSource>
<ClassName>$(StringResourcesNamespace).$(StringResourcesClassName)</ClassName>
</EmbeddedResource>
</ItemGroup>
<Choose>
<!-- Include common SR helper when resources are included unless SkipCommonResourcesIncludes is set. -->
<When Condition="Exists('$(StringResourcesPath)') AND '$(OmitResources)'!='true' AND '$(SkipCommonResourcesIncludes)'==''">
<ItemGroup>
<Compile Include="$(CommonPath)/System/SR$(ResourcesSourceFileExtension)">
<Visible>true</Visible>
<Link>Resources/Common/SR$(ResourcesSourceFileExtension)</Link>
</Compile>
</ItemGroup>
</When>
</Choose>
<PropertyGroup Condition="'$(BuildingUAPVertical)' == 'true'">
<CompileDependsOn>
CopyResxFilesToReswFiles;
$(CompileDependsOn);
</CompileDependsOn>
</PropertyGroup>
<Target Name="CalculateResourcesFileNames" Condition="'$(BuildingUAPVertical)' == 'true'">
<ItemGroup>
<_AllResxFiles Include="@(EmbeddedResource->'%(FullPath)')" Condition="'%(Extension)' == '.resx'">
<ReswName Condition="'%(EmbeddedResource.ReswName)' == ''">%(EmbeddedResource.ManifestResourceName)</ReswName>
</_AllResxFiles>
</ItemGroup>
<PropertyGroup>
<ProjectHasResources Condition="'@(_AllResxFiles)' != ''">true</ProjectHasResources>
<TestProjectNeedsModifiedPriFile Condition="'$(IsTestProject)' == 'true' AND '$(ProjectHasResources)' == 'true'">true</TestProjectNeedsModifiedPriFile>
<TestResourcesFolderPath Condition="'$(TestProjectNeedsModifiedPriFile)' == 'true'">$(RuntimePath)$(AssemblyName).Resw</TestResourcesFolderPath>
<_ResWDestinationPath Condition="'$(TestResourcesFolderPath)' != ''">$(TestResourcesFolderPath)</_ResWDestinationPath>
<_ResWDestinationPath Condition="'$(TestResourcesFolderPath)' == ''">$(ResourcesFolderPath)</_ResWDestinationPath>
</PropertyGroup>
<ItemGroup>
<_ReswOutputFiles Include="@(_AllResxFiles->'$(_ResWDestinationPath)/%(ReswName).resw')" />
</ItemGroup>
</Target>
<Target Name="CopyResxFilesToReswFiles"
Condition="'$(BuildingUAPVertical)' == 'true'"
DependsOnTargets="CalculateResourcesFileNames"
Inputs="@(_AllResxFiles)"
Outputs="@(_ReswOutputFiles)" >
<Copy SourceFiles="@(_AllResxFiles)"
DestinationFiles="@(_ReswOutputFiles)"
SkipUnchangedFiles="true">
<Output TaskParameter="CopiedFiles" ItemName="FilesCreated" />
</Copy>
<!-- We need to touch the copied files so that the target that uses them can track the inputs and outputs with the copied timestamp -->
<Touch Files="@(FilesCreated)" />
</Target>
</Project>