Skip to content

Commit 0f18fd6

Browse files
committed
Adjust script to handle .net core framework reference
1 parent 4eee6ef commit 0f18fd6

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

csharp/ql/src/Stubs/make_stubs_nuget.py

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@
44
import json
55
import shutil
66

7+
8+
def write_csproj_prefix(ioWrapper):
9+
ioWrapper.write('<Project Sdk="Microsoft.NET.Sdk">\n')
10+
ioWrapper.write(' <PropertyGroup>\n')
11+
ioWrapper.write(' <TargetFramework>net5.0</TargetFramework>\n')
12+
ioWrapper.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n')
13+
ioWrapper.write(' <OutputPath>bin\</OutputPath>\n')
14+
ioWrapper.write(
15+
' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n')
16+
ioWrapper.write(' </PropertyGroup>\n\n')
17+
18+
719
print('Script to generate stub file from a nuget package')
820
print(' Usage: python ' + sys.argv[0] +
921
' NUGET_PACKAGE_NAME [VERSION=latest] [WORK_DIR=tempDir]')
@@ -78,7 +90,7 @@
7890
'--name', rawSrcOutputDirName, '--output', rawSrcOutputDir])
7991
helpers.remove_files(rawSrcOutputDir, '.cs')
8092

81-
# load json from file
93+
# load json from query result file and split it into separate .cs files
8294
pathInfos = {}
8395
with open(jsonFile) as json_data:
8496
data = json.load(json_data)
@@ -94,7 +106,6 @@
94106

95107
print("\n --> Generated (formatted) stub files: " + rawSrcOutputDir)
96108

97-
98109
print("\n* Processing project.assets.json to generate folder structure")
99110
stubsDirName = 'stubs'
100111
stubsDir = os.path.join(outputDir, stubsDirName)
@@ -124,14 +135,7 @@
124135
print(' * Processing package: ' + name + '/' + version)
125136
with open(os.path.join(packageDir, name + '.csproj'), 'a') as pf:
126137

127-
pf.write('<Project Sdk="Microsoft.NET.Sdk">\n')
128-
pf.write(' <PropertyGroup>\n')
129-
pf.write(' <TargetFramework>net5.0</TargetFramework>\n')
130-
pf.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n')
131-
pf.write(' <OutputPath>bin\</OutputPath>\n')
132-
pf.write(
133-
' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n')
134-
pf.write(' </PropertyGroup>\n\n')
138+
write_csproj_prefix(pf)
135139
pf.write(' <ItemGroup>\n')
136140

137141
dlls = set()
@@ -167,20 +171,21 @@
167171
pf.write(' <ProjectReference Include="../../' +
168172
frameworksDirName + '/' + framework + '/' + framework + '.csproj" />\n')
169173

174+
pf.write(' <ProjectReference Include="../../' +
175+
frameworksDirName + '/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj" />\n')
176+
170177
pf.write(' </ItemGroup>\n')
171178
pf.write('</Project>\n')
172179

180+
# Processing references frameworks
173181
for framework in frameworks:
174182
with open(os.path.join(frameworksDir, framework, framework + '.csproj'), 'a') as pf:
175183

176-
pf.write('<Project Sdk="Microsoft.NET.Sdk">\n')
177-
pf.write(' <PropertyGroup>\n')
178-
pf.write(' <TargetFramework>net5.0</TargetFramework>\n')
179-
pf.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n')
180-
pf.write(' <OutputPath>bin\</OutputPath>\n')
184+
write_csproj_prefix(pf)
185+
pf.write(' <ItemGroup>\n')
181186
pf.write(
182-
' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n')
183-
pf.write(' </PropertyGroup>\n')
187+
' <ProjectReference Include="../Microsoft.NETCore.App/Microsoft.NETCore.App.csproj" />\n')
188+
pf.write(' </ItemGroup>\n')
184189
pf.write('</Project>\n')
185190

186191
for pathInfo in pathInfos:
@@ -189,6 +194,19 @@
189194
shutil.copy2(pathInfos[pathInfo], os.path.join(
190195
frameworksDir, framework))
191196

197+
# Processing assemblies in Microsoft.NETCore.App.Ref
198+
frameworkDir = os.path.join(frameworksDir, 'Microsoft.NETCore.App')
199+
if not os.path.exists(frameworkDir):
200+
os.makedirs(frameworkDir)
201+
with open(os.path.join(frameworksDir, 'Microsoft.NETCore.App', 'Microsoft.NETCore.App.csproj'), 'a') as pf:
202+
write_csproj_prefix(pf)
203+
pf.write('</Project>\n')
204+
205+
for pathInfo in pathInfos:
206+
if 'packs/microsoft.netcore.app.ref/' in pathInfo.lower():
207+
copiedFiles.add(pathInfo)
208+
shutil.copy2(pathInfos[pathInfo], frameworkDir)
209+
192210
for pathInfo in pathInfos:
193211
if pathInfo not in copiedFiles:
194212
print('Not copied to nuget or framework folder: ' + pathInfo)
@@ -199,10 +217,4 @@
199217

200218
print("\n --> Generated structured stub files: " + stubsDir)
201219

202-
print("\n* Building raw output project")
203-
helpers.run_cmd(['dotnet', 'build', '/t:rebuild', '/p:AllowUnsafeBlocks=true', '/p:WarningLevel=0', rawSrcOutputDir],
204-
'ERR: Build failed. Script failed to generate a stub that builds. Please touch up manually the stubs.')
205-
206-
print("\n --> Generated structured stub files: " + stubsDir)
207-
208220
exit(0)

0 commit comments

Comments
 (0)