diff --git a/shadowsocks-csharp/Util/ViewUtils.cs b/shadowsocks-csharp/Util/ViewUtils.cs index a29d790a..84fc6dca 100644 --- a/shadowsocks-csharp/Util/ViewUtils.cs +++ b/shadowsocks-csharp/Util/ViewUtils.cs @@ -1,4 +1,5 @@ using Shadowsocks.Controller; +using Shadowsocks.View; using System; using System.Collections.Generic; using System.Drawing; @@ -116,5 +117,21 @@ namespace Shadowsocks.Util graphics.Dispose(); return dpi; } + + public static string InputBox(string Prompt, string Title = "", string DefaultResponse = "", int XPos = -1, int YPos = -1) + { + var result = DefaultResponse; + var box = new InputBox() + { + Prompt = Prompt, + Text = Title ?? "Input", + Response = DefaultResponse + }; + if (box.ShowDialog()== DialogResult.OK) + { + result = box.Response; + } + return result; + } } } diff --git a/shadowsocks-csharp/View/CalculationControl.Designer.cs b/shadowsocks-csharp/View/CalculationControl.Designer.cs index 9995bb05..9e10c675 100644 --- a/shadowsocks-csharp/View/CalculationControl.Designer.cs +++ b/shadowsocks-csharp/View/CalculationControl.Designer.cs @@ -28,80 +28,81 @@ /// private void InitializeComponent() { - this.factorNum = new System.Windows.Forms.NumericUpDown(); - this.multiply = new System.Windows.Forms.Label(); - this.plus = new System.Windows.Forms.Label(); - this.valueLabel = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.factorNum)).BeginInit(); - this.SuspendLayout(); - // - // factorNum - // - this.factorNum.DecimalPlaces = 2; - this.factorNum.Dock = System.Windows.Forms.DockStyle.Right; - this.factorNum.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.factorNum.Increment = new decimal(new int[] { - 1, - 0, - 0, - 131072}); - this.factorNum.Location = new System.Drawing.Point(236, 0); - this.factorNum.Minimum = new decimal(new int[] { - 1000, - 0, - 0, - -2147418112}); - this.factorNum.Name = "factorNum"; - this.factorNum.Size = new System.Drawing.Size(86, 34); - this.factorNum.TabIndex = 6; - // - // multiply - // - this.multiply.AutoSize = true; - this.multiply.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.multiply.Location = new System.Drawing.Point(202, 2); - this.multiply.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); - this.multiply.Name = "multiply"; - this.multiply.Size = new System.Drawing.Size(26, 28); - this.multiply.TabIndex = 2; - this.multiply.Text = "×"; - // - // plus - // - this.plus.AutoSize = true; - this.plus.Font = new System.Drawing.Font("Segoe UI", 10F); - this.plus.Location = new System.Drawing.Point(5, 2); - this.plus.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); - this.plus.Name = "plus"; - this.plus.Size = new System.Drawing.Size(26, 28); - this.plus.TabIndex = 3; - this.plus.Text = "+"; - // - // valueLabel - // - this.valueLabel.AutoSize = true; - this.valueLabel.Font = new System.Drawing.Font("Microsoft YaHei", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.valueLabel.Location = new System.Drawing.Point(39, 6); - this.valueLabel.Name = "valueLabel"; - this.valueLabel.Size = new System.Drawing.Size(118, 24); - this.valueLabel.TabIndex = 7; - this.valueLabel.Text = "PackageLoss"; - // - // CalculationControl - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.valueLabel); - this.Controls.Add(this.factorNum); - this.Controls.Add(this.multiply); - this.Controls.Add(this.plus); - this.Margin = new System.Windows.Forms.Padding(0); - this.Name = "CalculationControl"; - this.Size = new System.Drawing.Size(322, 34); - ((System.ComponentModel.ISupportInitialize)(this.factorNum)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - + this.factorNum = new System.Windows.Forms.NumericUpDown(); + this.multiply = new System.Windows.Forms.Label(); + this.plus = new System.Windows.Forms.Label(); + this.valueLabel = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.factorNum)).BeginInit(); + this.SuspendLayout(); + // + // factorNum + // + this.factorNum.DecimalPlaces = 2; + this.factorNum.Dock = System.Windows.Forms.DockStyle.Right; + this.factorNum.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.factorNum.Increment = new decimal(new int[] { + 1, + 0, + 0, + 131072}); + this.factorNum.Location = new System.Drawing.Point(210, 0); + this.factorNum.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.factorNum.Minimum = new decimal(new int[] { + 1000, + 0, + 0, + -2147418112}); + this.factorNum.Name = "factorNum"; + this.factorNum.Size = new System.Drawing.Size(76, 30); + this.factorNum.TabIndex = 6; + // + // multiply + // + this.multiply.AutoSize = true; + this.multiply.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.multiply.Location = new System.Drawing.Point(180, 2); + this.multiply.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.multiply.Name = "multiply"; + this.multiply.Size = new System.Drawing.Size(22, 23); + this.multiply.TabIndex = 2; + this.multiply.Text = "×"; + // + // plus + // + this.plus.AutoSize = true; + this.plus.Font = new System.Drawing.Font("Segoe UI", 10F); + this.plus.Location = new System.Drawing.Point(4, 2); + this.plus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.plus.Name = "plus"; + this.plus.Size = new System.Drawing.Size(22, 23); + this.plus.TabIndex = 3; + this.plus.Text = "+"; + // + // valueLabel + // + this.valueLabel.AutoSize = true; + this.valueLabel.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.valueLabel.Location = new System.Drawing.Point(35, 4); + this.valueLabel.Name = "valueLabel"; + this.valueLabel.Size = new System.Drawing.Size(101, 20); + this.valueLabel.TabIndex = 7; + this.valueLabel.Text = "PackageLoss"; + // + // CalculationControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.valueLabel); + this.Controls.Add(this.factorNum); + this.Controls.Add(this.multiply); + this.Controls.Add(this.plus); + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "CalculationControl"; + this.Size = new System.Drawing.Size(286, 26); + ((System.ComponentModel.ISupportInitialize)(this.factorNum)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion diff --git a/shadowsocks-csharp/View/CalculationControl.resx b/shadowsocks-csharp/View/CalculationControl.resx index 1af7de15..29dcb1b3 100644 --- a/shadowsocks-csharp/View/CalculationControl.resx +++ b/shadowsocks-csharp/View/CalculationControl.resx @@ -1,120 +1,120 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/shadowsocks-csharp/View/HotkeySettingsForm.designer.cs b/shadowsocks-csharp/View/HotkeySettingsForm.designer.cs index 3d9428ec..4c9f4608 100644 --- a/shadowsocks-csharp/View/HotkeySettingsForm.designer.cs +++ b/shadowsocks-csharp/View/HotkeySettingsForm.designer.cs @@ -71,7 +71,7 @@ // this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnOK.Location = new System.Drawing.Point(416, 9); - this.btnOK.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnOK.Margin = new System.Windows.Forms.Padding(4); this.btnOK.Name = "btnOK"; this.btnOK.Size = new System.Drawing.Size(154, 39); this.btnOK.TabIndex = 0; @@ -83,7 +83,7 @@ // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(254, 9); - this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnCancel.Margin = new System.Windows.Forms.Padding(4); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(154, 39); this.btnCancel.TabIndex = 1; @@ -95,7 +95,7 @@ // this.btnRegisterAll.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnRegisterAll.Location = new System.Drawing.Point(92, 9); - this.btnRegisterAll.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.btnRegisterAll.Margin = new System.Windows.Forms.Padding(4); this.btnRegisterAll.Name = "btnRegisterAll"; this.btnRegisterAll.Size = new System.Drawing.Size(154, 39); this.btnRegisterAll.TabIndex = 2; @@ -125,7 +125,7 @@ this.tableLayoutPanel1.Controls.Add(this.RegHotkeysAtStartupCheckBox, 1, 6); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 8; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.16726F)); diff --git a/shadowsocks-csharp/View/InputBox.Designer.cs b/shadowsocks-csharp/View/InputBox.Designer.cs new file mode 100644 index 00000000..5e9f3328 --- /dev/null +++ b/shadowsocks-csharp/View/InputBox.Designer.cs @@ -0,0 +1,100 @@ +namespace Shadowsocks.View +{ + partial class InputBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.btnOK = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(55, 15); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(13, 51); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(484, 25); + this.textBox1.TabIndex = 1; + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(321, 91); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 31); + this.btnOK.TabIndex = 2; + this.btnOK.Text = "OK"; + this.btnOK.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(422, 91); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 31); + this.button2.TabIndex = 3; + this.button2.Text = "Cancel"; + this.button2.UseVisualStyleBackColor = true; + // + // InputBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(554, 134); + this.Controls.Add(this.button2); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "InputBox"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "InputBox"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/shadowsocks-csharp/View/InputBox.cs b/shadowsocks-csharp/View/InputBox.cs new file mode 100644 index 00000000..a8f315fc --- /dev/null +++ b/shadowsocks-csharp/View/InputBox.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Shadowsocks.View +{ + internal partial class InputBox : Form + { + public InputBox() + { + InitializeComponent(); + } + + internal string Prompt { get { return label1.Text; } set { label1.Text = value; } } + internal string Response { get { return textBox1.Text; } set { textBox1.Text = value; } } + + } +} diff --git a/shadowsocks-csharp/View/InputBox.resx b/shadowsocks-csharp/View/InputBox.resx new file mode 100644 index 00000000..29dcb1b3 --- /dev/null +++ b/shadowsocks-csharp/View/InputBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/shadowsocks-csharp/View/MenuViewController.cs b/shadowsocks-csharp/View/MenuViewController.cs index 14f2f932..6780b292 100644 --- a/shadowsocks-csharp/View/MenuViewController.cs +++ b/shadowsocks-csharp/View/MenuViewController.cs @@ -38,7 +38,7 @@ namespace Shadowsocks.View private ToolStripMenuItem disableItem; private ToolStripMenuItem AutoStartupItem; private ToolStripMenuItem ShareOverLANItem; - private ToolStripMenuItem SeperatorItem; + private ToolStripSeparator SeperatorItem; private ToolStripMenuItem ConfigItem; private ToolStripMenuItem ServersItem; private ToolStripMenuItem globalModeItem; @@ -280,7 +280,7 @@ namespace Shadowsocks.View return new ToolStripMenuItem(I18N.GetString(text),null, click); } - private ToolStripMenuItem CreateMenuGroup(string text, ToolStripMenuItem[] items) + private ToolStripMenuItem CreateMenuGroup(string text, ToolStripItem[] items) { return new ToolStripMenuItem(I18N.GetString(text), null,items); } @@ -294,19 +294,19 @@ namespace Shadowsocks.View this.PACModeItem = CreateToolStripMenuItem("PAC", new EventHandler(this.PACModeItem_Click)), this.globalModeItem = CreateToolStripMenuItem("Global", new EventHandler(this.GlobalModeItem_Click)) }), - this.ServersItem = CreateMenuGroup("Servers", new ToolStripMenuItem[] { - this.SeperatorItem = new ToolStripMenuItem("-"), + this.ServersItem = CreateMenuGroup("Servers", new ToolStripItem [] { + this.SeperatorItem = new ToolStripSeparator(), this.ConfigItem = CreateToolStripMenuItem("Edit Servers...", new EventHandler(this.Config_Click)), CreateToolStripMenuItem("Statistics Config...", StatisticsConfigItem_Click), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), CreateToolStripMenuItem("Share Server Config...", new EventHandler(this.QRCodeItem_Click)), CreateToolStripMenuItem("Scan QRCode from Screen...", new EventHandler(this.ScanQRCodeItem_Click)), CreateToolStripMenuItem("Import URL from Clipboard...", new EventHandler(this.ImportURLItem_Click)) }), - CreateMenuGroup("PAC ", new ToolStripMenuItem[] { + CreateMenuGroup("PAC ", new ToolStripItem[] { this.localPACItem = CreateToolStripMenuItem("Local PAC", new EventHandler(this.LocalPACItem_Click)), this.onlinePACItem = CreateToolStripMenuItem("Online PAC", new EventHandler(this.OnlinePACItem_Click)), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), this.editLocalPACItem = CreateToolStripMenuItem("Edit Local PAC File...", new EventHandler(this.EditPACFileItem_Click)), this.updateFromGFWListItem = CreateToolStripMenuItem("Update Local PAC from GFWList", new EventHandler(this.UpdatePACFromGFWListItem_Click)), this.editGFWUserRuleItem = CreateToolStripMenuItem("Edit User Rule for GFWList...", new EventHandler(this.EditUserRuleFileForGFWListItem_Click)), @@ -315,25 +315,25 @@ namespace Shadowsocks.View this.editOnlinePACItem = CreateToolStripMenuItem("Edit Online PAC URL...", new EventHandler(this.UpdateOnlinePACURLItem_Click)), }), this.proxyItem = CreateToolStripMenuItem("Forward Proxy...", new EventHandler(this.proxyItem_Click)), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), this.AutoStartupItem = CreateToolStripMenuItem("Start on Boot", new EventHandler(this.AutoStartupItem_Click)), this.ShareOverLANItem = CreateToolStripMenuItem("Allow other Devices to connect", new EventHandler(this.ShareOverLANItem_Click)), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), this.hotKeyItem = CreateToolStripMenuItem("Edit Hotkeys...", new EventHandler(this.hotKeyItem_Click)), - CreateMenuGroup("Help", new ToolStripMenuItem[] { + CreateMenuGroup("Help", new ToolStripItem[] { CreateToolStripMenuItem("Show Logs...", new EventHandler(this.ShowLogItem_Click)), this.VerboseLoggingToggleItem = CreateToolStripMenuItem( "Verbose Logging", new EventHandler(this.VerboseLoggingToggleItem_Click) ), this.ShowPluginOutputToggleItem = CreateToolStripMenuItem("Show Plugin Output", new EventHandler(this.ShowPluginOutputToggleItem_Click)), this.WriteI18NFileItem = CreateToolStripMenuItem("Write translation template",new EventHandler(WriteI18NFileItem_Click)), - CreateMenuGroup("Updates...", new ToolStripMenuItem[] { + CreateMenuGroup("Updates...", new ToolStripItem[] { CreateToolStripMenuItem("Check for Updates...", new EventHandler(this.checkUpdatesItem_Click)), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), this.autoCheckUpdatesToggleItem = CreateToolStripMenuItem("Check for Updates at Startup", new EventHandler(this.autoCheckUpdatesToggleItem_Click)), this.checkPreReleaseToggleItem = CreateToolStripMenuItem("Check Pre-release Version", new EventHandler(this.checkPreReleaseToggleItem_Click)), }), CreateToolStripMenuItem("About...", new EventHandler(this.AboutItem_Click)), }), - new ToolStripMenuItem("-"), + new ToolStripSeparator(), CreateToolStripMenuItem("Quit", new EventHandler(this.Quit_Click)) }); } @@ -469,7 +469,7 @@ namespace Shadowsocks.View } // user wants a seperator item between strategy and servers menugroup - items.Add(new ToolStripMenuItem("-")); + items .Add(new ToolStripSeparator()); int serverCount = 0; Configuration configuration = controller.GetConfigurationCopy(); @@ -485,11 +485,12 @@ namespace Shadowsocks.View } } - foreach (ToolStripMenuItem item in items) + foreach (var item in items) { - if (item.Tag != null && (item.Tag.ToString() == configuration.index.ToString() || item.Tag.ToString() == configuration.strategy)) + var menuItem = item as ToolStripMenuItem; + if (menuItem != null && menuItem.Tag != null && (menuItem.Tag.ToString() == configuration.index.ToString() || menuItem.Tag.ToString() == configuration.strategy)) { - item.Checked = true; + menuItem.Checked = true; } } } @@ -881,14 +882,21 @@ namespace Shadowsocks.View private void UpdateOnlinePACURLItem_Click(object sender, EventArgs e) { string origPacUrl = controller.GetConfigurationCopy().pacUrl; - //string pacUrl = Microsoft.VisualBasic.Interaction.InputBox( - // I18N.GetString("Please input PAC Url"), - // I18N.GetString("Edit Online PAC URL"), - // origPacUrl, -1, -1); - //if (!pacUrl.IsNullOrEmpty() && pacUrl != origPacUrl) - //{ - // controller.SavePACUrl(pacUrl); - //} +#if NET472 + string pacUrl = Microsoft.VisualBasic.Interaction.InputBox( + I18N.GetString("Please input PAC Url"), + I18N.GetString("Edit Online PAC URL"), + origPacUrl, -1, -1); +#else + string pacUrl = ViewUtils.InputBox( + I18N.GetString("Please input PAC Url"), + I18N.GetString("Edit Online PAC URL"), + origPacUrl, -1, -1); +#endif + if (!pacUrl.IsNullOrEmpty() && pacUrl != origPacUrl) + { + controller.SavePACUrl(pacUrl); + } } private void SecureLocalPacUrlToggleItem_Click(object sender, EventArgs e) diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 552acbd3..7d9c4467 100644 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -2,7 +2,7 @@ WinExe - netcoreapp3.1;net472 + net472;netcoreapp3.1 Shadowsocks true clowwindy & community 2020