@@ -51,121 +51,7 @@ SPDX-License-Identifier: MIT
5151 </ExportTaskNames >
5252 </ItemGroup >
5353
54- <Target Name =" GenerateTaskFiles" Condition =" '$(TargetFramework)' != '' " >
55- <GenerateTaskFile
56- TaskName =" %(ExportTaskNames.Identity)"
57- TaskNamespace =" %(ExportTaskNames.Namespace)"
58- TaskAssemblyFile =" $(AssemblyName).dll"
59- OutputDirectory =" $(OutputPath)"
60- >
61- <Output PropertyName =" GeneratedTaskFile" TaskParameter =" GeneratedFile" />
62- </GenerateTaskFile >
63-
64- <ItemGroup >
65- <TfmSpecificPackageFile Include =" $(GeneratedTaskFile)" PackagePath =" $(BuildOutputTargetFolder)\$(TargetFramework)" />
66- </ItemGroup >
67- </Target >
68-
69- <UsingTask
70- TaskName =" GenerateTaskFile"
71- TaskFactory =" RoslynCodeTaskFactory"
72- AssemblyFile =" $(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"
73- >
74- <ParameterGroup >
75- <TaskName ParameterType =" System.String" Required =" true" />
76- <TaskNamespace ParameterType =" System.String" />
77- <TaskAssemblyFile ParameterType =" System.String" Required =" true" />
78- <OutputDirectory ParameterType =" System.String" Required =" true" />
79- <GeneratedFile ParameterType =" System.String" Output =" true" />
80- </ParameterGroup >
81- <Task >
82- <Using Namespace =" System" />
83- <Using Namespace =" System.IO" />
84- <Code Type =" Fragment" Language =" cs" ><![CDATA[
85- const string PropertyMSBuildThisFileDirectory = "\x24(MSBuildThisFileDirectory)";
86- var path = Path.Combine(OutputDirectory, $"{TaskName}.task");
87- var taskFullName = string.IsNullOrEmpty(TaskNamespace)
88- ? TaskName
89- : $"{TaskNamespace}.{TaskName}";
90- var contents =
91- @$"<Project>
92- <UsingTask
93- TaskName=""{taskFullName}""
94- AssemblyFile=""{PropertyMSBuildThisFileDirectory}{TaskAssemblyFile}""
95- />
96- </Project>
97- ";
98-
99- File.WriteAllText(path, contents);
100-
101- GeneratedFile = path;
102- ]]> </Code >
103- </Task >
104- </UsingTask >
105-
106- <!--
107- alternative of nuget.exe's -IncludeReferencedProjects option
108- https://github.com/NuGet/Home/issues/3891
109-
110- other workarounds:
111- https://github.com/NuGet/Home/issues/3891#issuecomment-569491001
112- https://github.com/NuGet/Home/issues/3891#issuecomment-377319939
113- -->
114- <Target Name =" PopulateDependingAssembliesToPackage" >
115- <ItemGroup >
116- <TfmSpecificPackageFile
117- Include =" $(OutputPath)\*.dll"
118- Exclude =" $(OutputPath)\$(AssemblyName).dll"
119- PackagePath =" $(BuildOutputTargetFolder)\$(TargetFramework)\"
120- />
121- </ItemGroup >
122- </Target >
123-
124- <Target
125- Name =" GenerateMSBuildTargetsFile"
126- DependsOnTargets =" GenerateTaskFiles"
127- >
128- <ItemGroup >
129- <TaskTargetFrameworks Include =" $(TargetFrameworks.Split(';'))" />
130- <TaskFiles
131- Include =" @(ExportTaskNames)"
132- TargetFramework =" %(TaskTargetFrameworks.Identity)"
133- />
134- <TaskFiles
135- ImportLine =" < Import Project=" ..\$(BuildOutputTargetFolder)\%(TargetFramework)\%(Identity).task" /> "
136- />
137- </ItemGroup >
138-
139- <PropertyGroup >
140- <GenerateMSBuildTargetsFileOutputPath >$(OutputPath)\$(AssemblyName).targets</GenerateMSBuildTargetsFileOutputPath >
141- <!-- TODO: MSBuildRuntimeType == Full, Mono and otherwise -->
142- <GenerateMSBuildTargetsFileLines ><![CDATA[
143- <Project>
144- <ImportGroup Condition=" '%24(MSBuildRuntimeType)' == 'Core' and %24([System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription.StartsWith('.NET Core 3.')) ">
145- <!-- .NET Core 3.x -->
146- @(TaskFiles->WithMetadataValue('TargetFramework', 'netcoreapp3.1')->'%(ImportLine)', '%0D%0A ')
147- </ImportGroup>
148- <ImportGroup Condition=" '%24(MSBuildRuntimeType)' == 'Core' and %24([System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription.StartsWith('.NET 5.')) ">
149- <!-- .NET 5.x -->
150- @(TaskFiles->WithMetadataValue('TargetFramework', 'net5.0')->'%(ImportLine)', '%0D%0A ')
151- </ImportGroup>
152- <ImportGroup Condition=" '%24(MSBuildRuntimeType)' == 'Core' and %24([System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription.StartsWith('.NET 6.')) ">
153- <!-- .NET 6.x -->
154- @(TaskFiles->WithMetadataValue('TargetFramework', 'net6.0')->'%(ImportLine)', '%0D%0A ')
155- </ImportGroup>
156- </Project>
157- ]]> </GenerateMSBuildTargetsFileLines >
158- </PropertyGroup >
159-
160- <WriteLinesToFile
161- File =" $(GenerateMSBuildTargetsFileOutputPath)"
162- Lines =" $(GenerateMSBuildTargetsFileLines)"
163- Overwrite =" true"
164- Encoding =" UTF-8"
165- />
166-
167- <ItemGroup >
168- <None Pack =" true" Include =" $(GenerateMSBuildTargetsFileOutputPath)" PackagePath =" buildMultitargeting" />
169- </ItemGroup >
170- </Target >
54+ <Import Project =" GenerateTaskFiles.targets" />
55+ <Import Project =" GenerateMSBuildTargetsFile.targets" />
56+ <Import Project =" PopulateDependingAssembliesToPackage.targets" />
17157</Project >
0 commit comments