diff --git a/.gitignore b/.gitignore
index 0021e08..878492f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,5 @@ SteamServerBrowser.sdf
SteamServerBrowser*.zip
.vs/config/applicationhost.config
/.vs/
+/bin/
+/QueryMaster/bin/
diff --git a/CreateDistribZip.cmd b/CreateDistribZip.cmd
index 1b0e000..fb974df 100644
--- a/CreateDistribZip.cmd
+++ b/CreateDistribZip.cmd
@@ -1,4 +1,7 @@
@echo off
+setlocal
+setlocal enabledelayedexpansion
+
cd /d %~dp0
set cwd=%cd%
set curdate=%date:~6,4%-%date:~3,2%-%date:~0,2%
@@ -6,11 +9,26 @@ set target=%cd%\SteamServerBrowser
mkdir "%target%" 2>nul
del /s /q "%target%\*"
-cd "%cwd%\ServerBrowser\bin\x86\Release"
+rem find signtool.exe
+for /d %%f in ("C:\Program Files (x86)\Windows Kits\10\bin\10.*") do (
+ set nq=%%f
+ set nq=!nq:"=!
+ set signtool="!nq!\x86\signtool.exe"
+ if exist !signtool! goto foundSigntool
+)
+
+echo "can't find signtool.exe"
+pause
+goto :eof
+:foundSigntool
+
+
+cd "%cwd%\bin\Release"
copy ServerBrowser.exe "%target%"
copy QueryMaster.dll "%target%"
copy Ionic.BZip2.dll "%target%"
copy steam_api.dll "%target%"
+copy steam_api64.dll "%target%"
rem del "DevExpress*Rich*"
rem del "DevExpress*Office*"
@@ -33,17 +51,18 @@ goto :eof
@echo off
+
+
:CodeSigning
rem -----------------------------
rem If you want to digitally sign the generated .exe and .dll files,
rem you need to have your code signing certificate installed in the Windows certificate storage
rem -----------------------------
-set signtool="C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\signtool.exe"
set files=ServerBrowser.exe QueryMaster.dll
if not exist %signtool% (
echo %signtool% not found
pause
exit /b 1
)
-%signtool% sign /a /t "http://timestamp.digicert.com" %files%
-goto :eof
\ No newline at end of file
+%signtool% sign /n "ABPro Entwicklungs-, Vertriebs- und Wartungs GmbH" /t "http://timestamp.digicert.com" %files%
+goto :eof
diff --git a/QueryMaster/QueryMaster/MasterQuery.cs b/QueryMaster/QueryMaster/MasterQuery.cs
index e0420ce..c95f5ac 100644
--- a/QueryMaster/QueryMaster/MasterQuery.cs
+++ b/QueryMaster/QueryMaster/MasterQuery.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Net;
+using System.Net.Sockets;
namespace QueryMaster
{
@@ -14,11 +15,11 @@ public class MasterQuery
///
/// Master server for Gold Source games
///
- public static IPEndPoint GoldSrcServer = new IPEndPoint(Dns.GetHostAddresses("hl1master.steampowered.com")[0], 27011);
+ public static IPEndPoint GoldSrcServer = new IPEndPoint(Dns.GetHostAddresses("hl1master.steampowered.com").First(h => h.AddressFamily == AddressFamily.InterNetwork), 27011);
///
/// Master server for Source games
///
- public static IPEndPoint SourceServer = new IPEndPoint(Dns.GetHostAddresses("hl2master.steampowered.com")[0], 27011);
+ public static IPEndPoint SourceServer = new IPEndPoint(Dns.GetHostAddresses("hl2master.steampowered.com").First(h => h.AddressFamily == AddressFamily.InterNetwork), 27011);
///
/// Gets the appropriate masterserver query instance
///
diff --git a/QueryMaster/QueryMaster/MasterServerUdp.cs b/QueryMaster/QueryMaster/MasterServerUdp.cs
index 5d24f4a..fa199ce 100644
--- a/QueryMaster/QueryMaster/MasterServerUdp.cs
+++ b/QueryMaster/QueryMaster/MasterServerUdp.cs
@@ -64,7 +64,8 @@ public override void GetAddresses(Region region, MasterIpCallback callback, IpFi
ThreadPool.QueueUserWorkItem(y => callback(new ReadOnlyCollection>(serverList), null, !atEnd));
totalCount += endpoints.Count;
- atEnd |= totalCount >= GetAddressesLimit;
+ if (GetAddressesLimit != 0)
+ atEnd |= totalCount >= GetAddressesLimit;
} //while (!nextSeed.Equals(SeedEndpoint) && totalCount < GetAddressesLimit);
}
catch (Exception ex)
diff --git a/QueryMaster/QueryMaster/MasterServerWebApi.cs b/QueryMaster/QueryMaster/MasterServerWebApi.cs
index 4dc8367..5e36e4b 100644
--- a/QueryMaster/QueryMaster/MasterServerWebApi.cs
+++ b/QueryMaster/QueryMaster/MasterServerWebApi.cs
@@ -50,7 +50,12 @@ public class Response
///
public class MasterServerWebApi : MasterServer
{
- const string SteamWebApiKey = "B7D245299F6F990504A86FF91EC9D6BD"; // create an account and get a steam web api key at http://steamcommunity.com/dev/apikey
+ private readonly string steamWebApiKey = ""; // create an account and get a steam web api key at http://steamcommunity.com/dev/apikey
+
+ public MasterServerWebApi(string steamWebApiKey)
+ {
+ this.steamWebApiKey = steamWebApiKey;
+ }
///
/// Gets a server list from the Steam master server.
@@ -68,7 +73,7 @@ public override void GetAddresses(Region region, MasterIpCallback callback, IpFi
using (var cli = new XWebClient())
{
var filters = MasterUtil.ProcessFilter(filter);
- var url = $"https://api.steampowered.com/IGameServersService/GetServerList/v1/?key={SteamWebApiKey}&format=xml&filter={filters}&limit={GetAddressesLimit}";
+ var url = $"https://api.steampowered.com/IGameServersService/GetServerList/v1/?key={steamWebApiKey}&format=xml&filter={filters}&limit={GetAddressesLimit}";
var xml = cli.DownloadString(url);
var ser = new XmlSerializer(typeof (Response));
@@ -88,21 +93,26 @@ public override void GetAddresses(Region region, MasterIpCallback callback, IpFi
var resp = (Response) ser.Deserialize(new StringReader(xml));
var endpoints = new List>();
- foreach (var msg in resp.Servers)
+ if (resp.Servers != null)
{
- try
+ foreach (var msg in resp.Servers)
{
- int i = msg.addr.IndexOf(':');
- if (i > 0)
+ try
{
- var info = ConvertToServerInfo(msg);
- endpoints.Add(new Tuple(info.EndPoint, info));
+ int i = msg.addr.IndexOf(':');
+ if (i > 0)
+ {
+ var info = ConvertToServerInfo(msg);
+ endpoints.Add(new Tuple(info.EndPoint, info));
+ }
+ }
+ catch
+ {
+ // ignore
}
- }
- catch
- {
}
}
+
callback(new ReadOnlyCollection>(endpoints), null, false);
}
}
diff --git a/QueryMaster/QueryMaster/QueryMaster.csproj b/QueryMaster/QueryMaster/QueryMaster.csproj
index b5e213c..e683104 100644
--- a/QueryMaster/QueryMaster/QueryMaster.csproj
+++ b/QueryMaster/QueryMaster/QueryMaster.csproj
@@ -27,7 +27,7 @@
true
full
false
- bin\Debug\
+ ..\bin\Debug\
DEBUG;TRACE
prompt
4
@@ -38,8 +38,8 @@
pdbonly
true
- bin\Release\
- TRACE
+ ..\bin\Release\
+ TRACE;X64
prompt
4
bin\Release\QueryMaster.XML
diff --git a/ServerBrowser/.vs/ServerBrowser.csproj.dtbcache.json b/ServerBrowser/.vs/ServerBrowser.csproj.dtbcache.json
new file mode 100644
index 0000000..1724213
--- /dev/null
+++ b/ServerBrowser/.vs/ServerBrowser.csproj.dtbcache.json
@@ -0,0 +1 @@
+{"RootPath":"C:\\Sources\\SteamServerBrowser\\ServerBrowser","ProjectFileName":"ServerBrowser.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Games\\CounterStrikeGO.cs"},{"SourceFile":"Games\\QuakeLiveOptionsDialog.cs"},{"SourceFile":"Games\\QuakeLiveOptionsDialog.Designer.cs"},{"SourceFile":"Games\\ToxikkOptionsDialog.cs"},{"SourceFile":"Games\\ToxikkOptionsDialog.Designer.cs"},{"SourceFile":"GeoIpClient.cs"},{"SourceFile":"IniFile.cs"},{"SourceFile":"KeyBindForm.cs"},{"SourceFile":"KeyBindForm.Designer.cs"},{"SourceFile":"RenameTabForm.cs"},{"SourceFile":"RenameTabForm.Designer.cs"},{"SourceFile":"PasswordForm.cs"},{"SourceFile":"PasswordForm.Designer.cs"},{"SourceFile":"Games\\Reflex.cs"},{"SourceFile":"Games\\GameExtension.cs"},{"SourceFile":"PlayerCountInfo.cs"},{"SourceFile":"ServerBrowserForm.cs"},{"SourceFile":"ServerBrowserForm.Designer.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"ServerSources\\IServerSource.cs"},{"SourceFile":"ServerSources\\MasterServerClient.cs"},{"SourceFile":"ServerQueryLogic.cs"},{"SourceFile":"ServerRow.cs"},{"SourceFile":"ServerSources\\ServerListFromUrl.cs"},{"SourceFile":"SkinPicker.cs"},{"SourceFile":"SkinPicker.Designer.cs"},{"SourceFile":"Games\\QuakeLive.cs"},{"SourceFile":"Games\\Toxikk.cs"},{"SourceFile":"Ip4Utils.cs"},{"SourceFile":"Steamworks.cs"},{"SourceFile":"TabViewModel.cs"},{"SourceFile":"ConnectingWaitForm.cs"},{"SourceFile":"ConnectingWaitForm.Designer.cs"},{"SourceFile":"ThrottledThreadPool.cs"},{"SourceFile":"Win32.cs"},{"SourceFile":"XBarManager.cs"},{"SourceFile":"XWebClient.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.8.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.Desktop.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Drawing.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Images.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Office.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Pdf.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Printing.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Export.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Utils.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraBars.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraEditors.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraGrid.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraLayout.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraPrinting.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraRichEdit.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Sources\\SteamServerBrowser\\QueryMaster\\QueryMaster\\bin\\Debug\\QueryMaster.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Runtime.Serialization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Sources\\SteamServerBrowser\\ServerBrowser\\bin\\Debug\\ServerBrowser.exe","OutputItemRelativePath":"ServerBrowser.exe"},{"OutputItemFullPath":"C:\\Sources\\SteamServerBrowser\\ServerBrowser\\bin\\Debug\\ServerBrowser.pdb","OutputItemRelativePath":"ServerBrowser.pdb"}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/ServerBrowser/DLL/DevExpress.BonusSkins.v20.1.dll b/ServerBrowser/DLL/DevExpress.BonusSkins.v20.1.dll
deleted file mode 100644
index 81210d0..0000000
Binary files a/ServerBrowser/DLL/DevExpress.BonusSkins.v20.1.dll and /dev/null differ
diff --git a/ServerBrowser/Ip4Utils.cs b/ServerBrowser/Ip4Utils.cs
index cdaa4ef..64ca7ef 100644
--- a/ServerBrowser/Ip4Utils.cs
+++ b/ServerBrowser/Ip4Utils.cs
@@ -1,5 +1,7 @@
using System;
+using System.Linq;
using System.Net;
+using System.Net.Sockets;
namespace ServerBrowser
{
@@ -33,9 +35,9 @@ public static IPEndPoint ParseEndpoint(string addressAndPort)
try
{
- var ips = Dns.GetHostAddresses(parts[0]);
- if (ips.Length > 0)
- return new IPEndPoint(ips[0], port);
+ var ip = Dns.GetHostAddresses(parts[0]).FirstOrDefault(p => p.AddressFamily == AddressFamily.InterNetwork);
+ if (ip != null)
+ return new IPEndPoint(ip, port);
}
catch
{
diff --git a/ServerBrowser/Program.cs b/ServerBrowser/Program.cs
index 53c3d31..57b6e39 100644
--- a/ServerBrowser/Program.cs
+++ b/ServerBrowser/Program.cs
@@ -8,6 +8,7 @@
using DevExpress.LookAndFeel;
using DevExpress.Skins;
using DevExpress.Utils;
+using DevExpress.XtraEditors;
namespace ServerBrowser
{
@@ -27,22 +28,23 @@ public static void Main()
var baseFontSize = iniFile.GetSection("Options")?.GetDecimal("FontSize", 9) ?? 9m;
// change font before creating the main form to get correct auto-scaling
- Init(new Font("Segoe UI", (float)baseFontSize), "Office 2010 Black");
+ Init("Segoe UI", (float)baseFontSize, "Office 2010 Black");
var mainForm = new ServerBrowserForm(iniFile);
Application.Run(mainForm);
}
- public static void Init(Font uiFont, string skinName)
+ public static void Init(string fontName, float fontSize, string skinName)
{
InitExceptionHandling();
+ WindowsFormsSettings.SetPerMonitorDpiAware();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ThreadPool.SetMinThreads(50 + GeoIpClient.ThreadCount + 5, 100);
ThreadPool.SetMaxThreads(50 + GeoIpClient.ThreadCount + 5, 100);
- AppearanceObject.DefaultFont = uiFont;
+ AppearanceObject.DefaultFont = new Font(fontName, fontSize); // must not create a Font instance before initializing GDI+
UserLookAndFeel.Default.SkinName = skinName;
SkinManager.EnableFormSkins();
}
diff --git a/ServerBrowser/Properties/licenses.licx b/ServerBrowser/Properties/licenses.licx
index 49eff3b..20d9770 100644
--- a/ServerBrowser/Properties/licenses.licx
+++ b/ServerBrowser/Properties/licenses.licx
@@ -1,8 +1,8 @@
-DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v20.1, Version=20.1.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/ServerBrowser/ServerBrowser.csproj b/ServerBrowser/ServerBrowser.csproj
index b68f540..9fc025f 100644
--- a/ServerBrowser/ServerBrowser.csproj
+++ b/ServerBrowser/ServerBrowser.csproj
@@ -38,8 +38,8 @@
true
full
false
- bin\Debug\
- DEBUG;TRACE
+ ..\bin\Debug\
+ TRACE;DEBUG;X64
prompt
4
false
@@ -48,8 +48,8 @@
AnyCPU
pdbonly
true
- bin\Release\
- TRACE
+ ..\bin\Release\
+ TRACE;X64
prompt
4
false
@@ -86,54 +86,58 @@
app.manifest
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
+
False
True
-
-
-
-
+
+ False
+ True
+
+
+
+
+
@@ -276,24 +280,27 @@
false
-
-
- {4ca9c894-518f-42d7-bbe2-cfdfe7a03f8a}
- QueryMaster
-
-
+
+ Always
+
PreserveNewest
+
+
+ {4ca9c894-518f-42d7-bbe2-cfdfe7a03f8a}
+ QueryMaster
+
+
- copy "$(ProjectDir)\DLL\*BonusSkin*.dll" "$(TargetDir)"
+ copy "C:\Program Files\DevExpress 23.2\Components\Bin\NetCore\DevExpress.BonusSkins.*.dll" "$(TargetDir)"