Skip to content

Commit 9d65d58

Browse files
committed
BuildTools: Update to .NET6 and VS2022
1 parent 28a2816 commit 9d65d58

File tree

10 files changed

+262
-69
lines changed

10 files changed

+262
-69
lines changed

tools/CustomBuildTool/Build.cs

Lines changed: 109 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
using System.Net.Http;
2727
using System.Text;
2828
using System.Text.Json;
29-
using System.Security.Cryptography.X509Certificates;
30-
using Microsoft.Win32;
3129

3230
namespace CustomBuildTool
3331
{
@@ -169,7 +167,7 @@ public static void SetupBuildEnvironment(bool ShowBuildInfo)
169167
if (ShowBuildInfo)
170168
{
171169
Program.PrintColorMessage("Windows: ", ConsoleColor.DarkGray, false);
172-
Program.PrintColorMessage("Windows NT " + Environment.OSVersion.Version.ToString(), ConsoleColor.Green, true);
170+
Program.PrintColorMessage(Win32.GetKernelVersion(), ConsoleColor.Green, true);
173171

174172
var instance = VisualStudio.GetVisualStudioInstance();
175173
if (instance != null)
@@ -824,6 +822,7 @@ public static bool BuildSolution(string Solution, BuildFlags Flags)
824822
if ((Flags & BuildFlags.Build32bit) == BuildFlags.Build32bit)
825823
{
826824
StringBuilder compilerOptions = new StringBuilder();
825+
StringBuilder commandLine = new StringBuilder();
827826
Program.PrintColorMessage(BuildTimeStamp(), ConsoleColor.DarkGray, false, Flags);
828827
Program.PrintColorMessage("Building " + Path.GetFileNameWithoutExtension(Solution) + " (", ConsoleColor.Cyan, false, Flags);
829828
Program.PrintColorMessage("x32", ConsoleColor.Green, false, Flags);
@@ -838,13 +837,17 @@ public static bool BuildSolution(string Solution, BuildFlags Flags)
838837
if (!string.IsNullOrEmpty(BuildCount))
839838
compilerOptions.Append($"PHAPP_VERSION_BUILD=\"{BuildCount}\"");
840839

840+
commandLine.Append("/m /nologo /nodereuse:false /verbosity:quiet ");
841+
commandLine.Append("/p:Configuration=" + (Flags.HasFlag(BuildFlags.BuildDebug) ? "Debug " : "Release "));
842+
commandLine.Append("/p:Platform=Win32 ");
843+
commandLine.Append("/p:ExternalCompilerOptions=\"" + compilerOptions.ToString() + "\" ");
844+
if (File.Exists("tools\\versioning\\version.res"))
845+
commandLine.Append($"/p:ExternalAdditionalDependencies=\"{Path.GetFullPath("tools\\versioning\\version.res")}\" ");
846+
commandLine.Append(Solution);
847+
841848
int errorcode = Win32.CreateProcess(
842849
msbuildExePath,
843-
"/m /nologo /nodereuse:false /verbosity:quiet " +
844-
"/p:Configuration=" + (Flags.HasFlag(BuildFlags.BuildDebug) ? "Debug " : "Release ") +
845-
"/p:Platform=Win32 " +
846-
"/p:ExternalCompilerOptions=\"" + compilerOptions.ToString() + "\" " +
847-
Solution,
850+
commandLine.ToString(),
848851
out string errorstring
849852
);
850853

@@ -858,6 +861,7 @@ out string errorstring
858861
if ((Flags & BuildFlags.Build64bit) == BuildFlags.Build64bit)
859862
{
860863
StringBuilder compilerOptions = new StringBuilder();
864+
StringBuilder commandLine = new StringBuilder();
861865
Program.PrintColorMessage(BuildTimeStamp(), ConsoleColor.DarkGray, false, Flags);
862866
Program.PrintColorMessage("Building " + Path.GetFileNameWithoutExtension(Solution) + " (", ConsoleColor.Cyan, false, Flags);
863867
Program.PrintColorMessage("x64", ConsoleColor.Green, false, Flags);
@@ -872,13 +876,17 @@ out string errorstring
872876
if (!string.IsNullOrEmpty(BuildCount))
873877
compilerOptions.Append($"PHAPP_VERSION_BUILD=\"{BuildCount}\"");
874878

879+
commandLine.Append("/m /nologo /nodereuse:false /verbosity:quiet ");
880+
commandLine.Append("/p:Configuration=" + (Flags.HasFlag(BuildFlags.BuildDebug) ? "Debug " : "Release "));
881+
commandLine.Append("/p:Platform=x64 ");
882+
commandLine.Append("/p:ExternalCompilerOptions=\"" + compilerOptions.ToString() + "\" ");
883+
if (File.Exists("tools\\versioning\\version.res"))
884+
commandLine.Append($"/p:ExternalAdditionalDependencies=\"{Path.GetFullPath("tools\\versioning\\version.res")}\" ");
885+
commandLine.Append(Solution);
886+
875887
int errorcode = Win32.CreateProcess(
876888
msbuildExePath,
877-
"/m /nologo /nodereuse:false /verbosity:quiet " +
878-
"/p:Configuration=" + (Flags.HasFlag(BuildFlags.BuildDebug) ? "Debug " : "Release ") +
879-
"/p:Platform=x64 " +
880-
"/p:ExternalCompilerOptions=\"" + compilerOptions.ToString() + "\" " +
881-
Solution,
889+
commandLine.ToString(),
882890
out string errorstring
883891
);
884892

@@ -892,6 +900,51 @@ out string errorstring
892900
return true;
893901
}
894902

903+
public static bool BuildVersionInfo(BuildFlags Flags)
904+
{
905+
if (!File.Exists("tools\\versioning\\version.rc"))
906+
return true;
907+
908+
string windowsSdkPath = VisualStudio.GetWindowsSdkPath();
909+
string windowsSdkIncludePath = VisualStudio.GetWindowsSdkIncludePath();
910+
string resIncludePath = Path.GetFullPath("processhacker");
911+
StringBuilder commandLine = new StringBuilder("/nologo /v ");
912+
string rcExePath = windowsSdkPath + "\\x64\\rc.exe";
913+
914+
if (!File.Exists(rcExePath))
915+
{
916+
Program.PrintColorMessage("Unable to find the resource compiler.", ConsoleColor.Red);
917+
return false;
918+
}
919+
920+
commandLine.Append($"/i \"{windowsSdkIncludePath}\\um\" /i \"{windowsSdkIncludePath}\\shared\" /i \"{resIncludePath}\" ");
921+
922+
if (Flags.HasFlag(BuildFlags.BuildApi))
923+
commandLine.Append(" /d \"PH_BUILD_API\" ");
924+
if (!string.IsNullOrEmpty(BuildCommit))
925+
commandLine.Append($"/d \"PHAPP_VERSION_COMMITHASH=\"{BuildCommit.Substring(0, 7)}\"\" ");
926+
if (!string.IsNullOrEmpty(BuildRevision))
927+
commandLine.Append($"/d \"PHAPP_VERSION_REVISION=\"{BuildRevision}\"\" ");
928+
if (!string.IsNullOrEmpty(BuildCount))
929+
commandLine.Append($"/d \"PHAPP_VERSION_BUILD=\"{BuildCount}\"\" ");
930+
931+
commandLine.Append("/fo tools\\versioning\\version.res tools\\versioning\\version.rc");
932+
933+
int errorcode = Win32.CreateProcess(
934+
rcExePath,
935+
commandLine.ToString(),
936+
out string errorstring
937+
);
938+
939+
if (errorcode != 0)
940+
{
941+
Program.PrintColorMessage("[ERROR] (" + errorcode + ") " + errorstring, ConsoleColor.Red, true, Flags | BuildFlags.BuildVerbose);
942+
return false;
943+
}
944+
945+
946+
return true;
947+
}
895948
public static bool BuildDeployUpdateConfig()
896949
{
897950
string buildBuildId;
@@ -900,7 +953,6 @@ public static bool BuildDeployUpdateConfig()
900953
string buildPostApiKey;
901954
string buildPostSfUrl;
902955
string buildPostSfApiKey;
903-
string buildPostString;
904956
string buildFilename;
905957
string buildBinHash;
906958
string buildSetupHash;
@@ -1021,7 +1073,7 @@ public static bool BuildDeployUpdateConfig()
10211073

10221074
try
10231075
{
1024-
buildPostString = JsonSerializer.Serialize(new BuildUpdateRequest
1076+
BuildUpdateRequest buildUpdateRequest = new BuildUpdateRequest
10251077
{
10261078
BuildUpdated = TimeStart.ToString("o"),
10271079
BuildVersion = BuildVersion,
@@ -1035,62 +1087,72 @@ public static bool BuildDeployUpdateConfig()
10351087
SetupLength = buildSetupFileLength.ToString(),
10361088
SetupHash = buildSetupHash,
10371089
SetupSig = BuildSetupSig,
1038-
}, new JsonSerializerOptions { IgnoreNullValues = true, PropertyNameCaseInsensitive = true });
1090+
};
1091+
1092+
byte[] buildPostString = JsonSerializer.SerializeToUtf8Bytes(buildUpdateRequest, BuildUpdateRequestContext.Default.BuildUpdateRequest);
10391093

1040-
if (string.IsNullOrEmpty(buildPostString))
1094+
if (buildPostString == null || buildPostString.LongLength == 0)
10411095
return false;
10421096

10431097
using (HttpClientHandler httpClientHandler = new HttpClientHandler())
10441098
{
10451099
httpClientHandler.AutomaticDecompression = DecompressionMethods.All;
10461100

10471101
using (HttpClient httpClient = new HttpClient(httpClientHandler))
1048-
using (StringContent httpContent = new StringContent(buildPostString, Encoding.UTF8, "application/json"))
10491102
{
10501103
httpClient.DefaultRequestHeaders.Add("X-ApiKey", buildPostApiKey);
10511104

1052-
var httpTask = httpClient.PostAsync(buildPostUrl, httpContent);
1053-
httpTask.Wait();
1054-
1055-
if (!httpTask.Result.IsSuccessStatusCode)
1105+
using (ByteArrayContent httpContent = new ByteArrayContent(buildPostString))
10561106
{
1057-
Program.PrintColorMessage("[UpdateBuildWebService] " + httpTask.Result, ConsoleColor.Red);
1058-
return false;
1107+
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
1108+
1109+
var httpTask = httpClient.PostAsync(buildPostUrl, httpContent);
1110+
httpTask.Wait();
1111+
1112+
if (!httpTask.Result.IsSuccessStatusCode)
1113+
{
1114+
Program.PrintColorMessage("[UpdateBuildWebService] " + httpTask.Result, ConsoleColor.Red);
1115+
return false;
1116+
}
10591117
}
10601118
}
10611119
}
1062-
}
1063-
catch (Exception ex)
1064-
{
1065-
Program.PrintColorMessage("[UpdateBuildWebService] " + ex, ConsoleColor.Red);
1066-
return false;
1067-
}
10681120

1069-
try
1070-
{
1071-
using (HttpClientHandler httpClientHandler = new HttpClientHandler())
1121+
try
10721122
{
1073-
httpClientHandler.AutomaticDecompression = DecompressionMethods.All;
1074-
1075-
using (HttpClient httpClient = new HttpClient(httpClientHandler))
1076-
using (StringContent httpContent = new StringContent(buildPostString, Encoding.UTF8, "application/json"))
1123+
using (HttpClientHandler httpClientHandler = new HttpClientHandler())
10771124
{
1078-
httpClient.DefaultRequestHeaders.Add("X-ApiKey", buildPostSfApiKey);
1125+
httpClientHandler.AutomaticDecompression = DecompressionMethods.All;
10791126

1080-
var httpTask = httpClient.PostAsync(buildPostSfUrl, httpContent);
1081-
httpTask.Wait();
1082-
1083-
if (!httpTask.Result.IsSuccessStatusCode)
1127+
using (HttpClient httpClient = new HttpClient(httpClientHandler))
10841128
{
1085-
Program.PrintColorMessage("[UpdateBuildWebService-SF] " + httpTask.Result, ConsoleColor.Red);
1086-
return false;
1129+
httpClient.DefaultRequestHeaders.Add("X-ApiKey", buildPostSfApiKey);
1130+
1131+
using (ByteArrayContent httpContent = new ByteArrayContent(buildPostString))
1132+
{
1133+
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
1134+
1135+
var httpTask = httpClient.PostAsync(buildPostSfUrl, httpContent);
1136+
httpTask.Wait();
1137+
1138+
if (!httpTask.Result.IsSuccessStatusCode)
1139+
{
1140+
Program.PrintColorMessage("[UpdateBuildWebService-SF] " + httpTask.Result, ConsoleColor.Red);
1141+
return false;
1142+
}
1143+
}
10871144
}
10881145
}
10891146
}
1147+
catch (Exception ex)
1148+
{
1149+
Program.PrintColorMessage("[UpdateBuildWebService-SF] " + ex, ConsoleColor.Red);
1150+
return false;
1151+
}
10901152
}
10911153
catch (Exception ex)
10921154
{
1093-
Program.PrintColorMessage("[UpdateBuildWebService-SF] " + ex, ConsoleColor.Red);
1155+
Program.PrintColorMessage("[UpdateBuildWebService] " + ex, ConsoleColor.Red);
10941156
return false;
10951157
}
10961158

@@ -1138,7 +1200,9 @@ public static bool BuildDeployUploadArtifacts()
11381200
filename = Path.GetFileName(sourceFile);
11391201
//filename = filename.Replace("-build-", $"-{BuildVersion}-", StringComparison.OrdinalIgnoreCase);
11401202

1203+
#pragma warning disable SYSLIB0014 // Type or member is obsolete
11411204
request = (FtpWebRequest)WebRequest.Create(buildPostUrl + filename);
1205+
#pragma warning restore SYSLIB0014 // Type or member is obsolete
11421206
request.Credentials = new NetworkCredential(buildPostKey, buildPostName);
11431207
request.Method = WebRequestMethods.Ftp.UploadFile;
11441208
request.Timeout = System.Threading.Timeout.Infinite;

tools/CustomBuildTool/CustomBuildTool.csproj

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1-
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="Current">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
44
<Platforms>x64;x86</Platforms>
5-
<PublishTrimmed>true</PublishTrimmed>
6-
<PublishReadyToRun>true</PublishReadyToRun>
7-
<PublishSingleFile>true</PublishSingleFile>
8-
<PublishReadyToRunShowWarnings>true</PublishReadyToRunShowWarnings>
9-
<TargetFramework>net5.0</TargetFramework>
5+
<TargetFramework>net6.0</TargetFramework>
106
<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
117
<TrimUnusedDependencies>true</TrimUnusedDependencies>
128
<ApplicationManifest>app.manifest</ApplicationManifest>
139
<OldToolsVersion>Current</OldToolsVersion>
1410
<Version>1.0</Version>
11+
<CodePage>65001</CodePage>
1512
<ProjectGuid>{CD644DF2-A658-4CBC-9497-CA5DD13CFEC3}</ProjectGuid>
1613
</PropertyGroup>
1714
<PropertyGroup Condition="'$(Platform)'=='x86'">

tools/CustomBuildTool/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ public static void Main(string[] args)
159159
{
160160
Build.SetupBuildEnvironment(true);
161161

162+
Build.BuildVersionInfo(
163+
BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose
164+
);
165+
162166
if (!Build.BuildSolution("ProcessHacker.sln",
163167
BuildFlags.Build32bit | BuildFlags.Build64bit |
164168
BuildFlags.BuildDebug | BuildFlags.BuildVerbose |
@@ -205,6 +209,10 @@ public static void Main(string[] args)
205209
{
206210
Build.SetupBuildEnvironment(true);
207211

212+
Build.BuildVersionInfo(
213+
BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose
214+
);
215+
208216
if (!Build.BuildSolution("ProcessHacker.sln",
209217
BuildFlags.Build32bit | BuildFlags.Build64bit |
210218
BuildFlags.BuildVerbose | BuildFlags.BuildApi
@@ -253,6 +261,10 @@ public static void Main(string[] args)
253261
{
254262
Build.SetupBuildEnvironment(true);
255263

264+
Build.BuildVersionInfo(
265+
BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose
266+
);
267+
256268
if (!Build.BuildSolution("ProcessHacker.sln",
257269
BuildFlags.Build32bit | BuildFlags.Build64bit |
258270
BuildFlags.BuildVerbose | BuildFlags.BuildApi

tools/CustomBuildTool/Properties/PublishProfiles/32bit.pubxml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
77
<PublishProtocol>FileSystem</PublishProtocol>
88
<Configuration>Release</Configuration>
99
<Platform>x86</Platform>
10-
<TargetFramework>net5.0</TargetFramework>
10+
<TargetFramework>net6.0</TargetFramework>
1111
<TrimUnusedDependencies>true</TrimUnusedDependencies>
1212
<PublishDir>bin\Release</PublishDir>
1313
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
1414
<SelfContained>true</SelfContained>
15-
<PublishSingleFile>True</PublishSingleFile>
16-
<PublishReadyToRun>True</PublishReadyToRun>
17-
<PublishTrimmed>True</PublishTrimmed>
15+
<PublishSingleFile>true</PublishSingleFile>
16+
<PublishReadyToRun>true</PublishReadyToRun>
17+
<PublishTrimmed>true</PublishTrimmed>
18+
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
19+
<EventSourceSupport>false</EventSourceSupport>
1820
</PropertyGroup>
1921
</Project>

0 commit comments

Comments
 (0)