mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
Merge branch 'master' into youtube-uploader
This commit is contained in:
commit
21a813bb6f
25 changed files with 103 additions and 80 deletions
|
@ -27,6 +27,7 @@ You should have received a copy of the GNU General Public License
|
|||
using Shell32;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using File = System.IO.File;
|
||||
using Folder = Shell32.Folder;
|
||||
|
||||
|
@ -114,8 +115,9 @@ private static string GetShortcutTargetPath(string shortcutPath)
|
|||
|
||||
try
|
||||
{
|
||||
Shell shell = new ShellClass();
|
||||
Folder folder = shell.NameSpace(directory);
|
||||
Type t = Type.GetTypeFromProgID("Shell.Application");
|
||||
object shell = Activator.CreateInstance(t);
|
||||
Folder folder = (Folder)t.InvokeMember("NameSpace", BindingFlags.InvokeMethod, null, shell, new object[] { directory });
|
||||
FolderItem folderItem = folder.ParseName(filename);
|
||||
|
||||
if (folderItem != null)
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
</packages>
|
|
@ -93,7 +93,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Design" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
</packages>
|
|
@ -66,7 +66,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
</packages>
|
|
@ -41,7 +41,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
</packages>
|
|
@ -29,7 +29,7 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
{
|
||||
internal class ButtonObject : DrawableObject
|
||||
internal class ImageEditorButton : ImageEditorControl
|
||||
{
|
||||
public string Text { get; set; }
|
||||
public Color ButtonColor { get; set; }
|
|
@ -29,7 +29,7 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
{
|
||||
internal abstract class DrawableObject
|
||||
internal abstract class ImageEditorControl
|
||||
{
|
||||
public event MouseEventHandler MouseDown, MouseUp;
|
||||
public event Action MouseEnter, MouseLeave;
|
|
@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
{
|
||||
internal class ImageEditorScrollbar : DrawableObject
|
||||
internal class ImageEditorScrollbar : ImageEditorControl
|
||||
{
|
||||
public Orientation Orientation { get; set; }
|
||||
public int Thickness { get; set; } = 15;
|
||||
|
|
|
@ -28,7 +28,7 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
namespace ShareX.ScreenCaptureLib
|
||||
{
|
||||
internal class ResizeNode : DrawableObject
|
||||
internal class ResizeNode : ImageEditorControl
|
||||
{
|
||||
public const int DefaultSize = 13;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ public override void OnCreating()
|
|||
Point pos = InputManager.ClientMousePosition;
|
||||
Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
|
||||
|
||||
if (Manager.IsCornerMoving && LoadImageFile(AnnotationOptions.LastImageFilePath, true))
|
||||
if (Manager.IsCtrlModifier && LoadImageFile(AnnotationOptions.LastImageFilePath, true))
|
||||
{
|
||||
OnCreated();
|
||||
Manager.IsMoving = true;
|
||||
|
|
|
@ -51,7 +51,7 @@ public override void OnCreating()
|
|||
Point pos = InputManager.ClientMousePosition;
|
||||
Rectangle = new Rectangle(pos.X, pos.Y, 1, 1);
|
||||
|
||||
if (Manager.IsCornerMoving && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize))
|
||||
if (Manager.IsCtrlModifier && LoadSticker(AnnotationOptions.LastStickerPath, AnnotationOptions.StickerSize))
|
||||
{
|
||||
OnCreated();
|
||||
Manager.IsMoving = true;
|
||||
|
|
|
@ -158,6 +158,7 @@ private set
|
|||
public bool IsPanning { get; set; }
|
||||
public bool IsResizing { get; set; }
|
||||
// Is holding Ctrl?
|
||||
public bool IsCtrlModifier { get; private set; }
|
||||
public bool IsCornerMoving { get; private set; }
|
||||
// Is holding Shift?
|
||||
public bool IsProportionalResizing { get; private set; }
|
||||
|
@ -178,7 +179,7 @@ private set
|
|||
|
||||
public AnnotationOptions AnnotationOptions => Options.AnnotationOptions;
|
||||
|
||||
internal List<DrawableObject> DrawableObjects { get; private set; }
|
||||
internal List<ImageEditorControl> DrawableObjects { get; private set; }
|
||||
internal ResizeNode[] ResizeNodes { get; private set; }
|
||||
|
||||
private bool nodesVisible;
|
||||
|
@ -229,7 +230,7 @@ public ShapeManager(RegionCaptureForm form)
|
|||
Form = form;
|
||||
Options = form.Options;
|
||||
|
||||
DrawableObjects = new List<DrawableObject>();
|
||||
DrawableObjects = new List<ImageEditorControl>();
|
||||
ResizeNodes = new ResizeNode[9];
|
||||
|
||||
for (int i = 0; i < ResizeNodes.Length; i++)
|
||||
|
@ -282,7 +283,7 @@ private void form_Shown(object sender, EventArgs e)
|
|||
|
||||
private void form_LostFocus(object sender, EventArgs e)
|
||||
{
|
||||
IsCornerMoving = IsProportionalResizing = IsSnapResizing = false;
|
||||
ResetModifiers();
|
||||
}
|
||||
|
||||
private void form_MouseDown(object sender, MouseEventArgs e)
|
||||
|
@ -410,7 +411,17 @@ private void form_KeyDown(object sender, KeyEventArgs e)
|
|||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.ControlKey:
|
||||
if (!IsCtrlModifier && !IsCornerMoving)
|
||||
{
|
||||
if (IsCreating || IsResizing)
|
||||
{
|
||||
IsCornerMoving = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsCtrlModifier = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Keys.ShiftKey:
|
||||
IsProportionalResizing = true;
|
||||
|
@ -638,6 +649,7 @@ private void form_KeyUp(object sender, KeyEventArgs e)
|
|||
switch (e.KeyCode)
|
||||
{
|
||||
case Keys.ControlKey:
|
||||
IsCtrlModifier = false;
|
||||
IsCornerMoving = false;
|
||||
break;
|
||||
case Keys.ShiftKey:
|
||||
|
@ -856,7 +868,7 @@ private void EndPanning()
|
|||
|
||||
internal void UpdateObjects()
|
||||
{
|
||||
DrawableObject[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray();
|
||||
ImageEditorControl[] objects = DrawableObjects.OrderByDescending(x => x.Order).ToArray();
|
||||
|
||||
Point position = InputManager.ClientMousePosition;
|
||||
|
||||
|
@ -864,7 +876,7 @@ internal void UpdateObjects()
|
|||
{
|
||||
for (int i = 0; i < objects.Length; i++)
|
||||
{
|
||||
DrawableObject obj = objects[i];
|
||||
ImageEditorControl obj = objects[i];
|
||||
|
||||
if (obj.Visible)
|
||||
{
|
||||
|
@ -895,7 +907,7 @@ internal void UpdateObjects()
|
|||
{
|
||||
if (InputManager.IsMouseReleased(MouseButtons.Left))
|
||||
{
|
||||
foreach (DrawableObject obj in objects)
|
||||
foreach (ImageEditorControl obj in objects)
|
||||
{
|
||||
if (obj.IsDragging)
|
||||
{
|
||||
|
@ -908,7 +920,7 @@ internal void UpdateObjects()
|
|||
|
||||
internal void DrawObjects(Graphics g)
|
||||
{
|
||||
foreach (DrawableObject obj in DrawableObjects)
|
||||
foreach (ImageEditorControl obj in DrawableObjects)
|
||||
{
|
||||
if (obj.Visible)
|
||||
{
|
||||
|
@ -1262,6 +1274,11 @@ private void DeleteAllShapes()
|
|||
DeselectCurrentShape();
|
||||
}
|
||||
|
||||
private void ResetModifiers()
|
||||
{
|
||||
IsCtrlModifier = IsCornerMoving = IsProportionalResizing = IsSnapResizing = false;
|
||||
}
|
||||
|
||||
private void ClearTools()
|
||||
{
|
||||
foreach (BaseTool tool in ToolShapes)
|
||||
|
@ -1277,6 +1294,8 @@ public BaseShape GetIntersectShape()
|
|||
}
|
||||
|
||||
public BaseShape GetIntersectShape(Point position)
|
||||
{
|
||||
if (!IsCtrlModifier)
|
||||
{
|
||||
for (int i = Shapes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
|
@ -1287,6 +1306,7 @@ public BaseShape GetIntersectShape(Point position)
|
|||
return shape;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ public class CropTool : BaseTool
|
|||
|
||||
public override bool LimitRectangleToInsideCanvas { get; } = true;
|
||||
|
||||
private ButtonObject confirmButton, cancelButton;
|
||||
private ImageEditorButton confirmButton, cancelButton;
|
||||
private Size buttonSize = new Size(80, 40);
|
||||
private int buttonOffset = 15;
|
||||
|
||||
|
@ -75,7 +75,7 @@ public override void OnDraw(Graphics g)
|
|||
|
||||
public override void OnCreated()
|
||||
{
|
||||
confirmButton = new ButtonObject()
|
||||
confirmButton = new ImageEditorButton()
|
||||
{
|
||||
Text = "\u2714",
|
||||
ButtonColor = Color.ForestGreen,
|
||||
|
@ -87,7 +87,7 @@ public override void OnCreated()
|
|||
confirmButton.MouseLeave += () => Manager.Form.SetDefaultCursor();
|
||||
Manager.DrawableObjects.Add(confirmButton);
|
||||
|
||||
cancelButton = new ButtonObject()
|
||||
cancelButton = new ImageEditorButton()
|
||||
{
|
||||
Text = "\u2716",
|
||||
ButtonColor = Color.FromArgb(227, 45, 45),
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
<Compile Include="Forms\StickerPackForm.Designer.cs">
|
||||
<DependentUpon>StickerPackForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="RegionHelpers\ButtonObject.cs" />
|
||||
<Compile Include="RegionHelpers\ImageEditorButton.cs" />
|
||||
<Compile Include="RegionHelpers\ImageEditorScrollbar.cs" />
|
||||
<Compile Include="RegionHelpers\ScrollbarManager.cs" />
|
||||
<Compile Include="Shapes\AnnotationOptions.cs" />
|
||||
|
@ -203,7 +203,7 @@
|
|||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Shapes\ShapeManager.cs" />
|
||||
<Compile Include="RegionHelpers\DrawableObject.cs" />
|
||||
<Compile Include="RegionHelpers\ImageEditorControl.cs" />
|
||||
<Compile Include="Forms\RegionCaptureForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
|
|
@ -1793,8 +1793,6 @@ private void InitializeComponent()
|
|||
// cbFirebaseIsShort
|
||||
//
|
||||
resources.ApplyResources(this.cbFirebaseIsShort, "cbFirebaseIsShort");
|
||||
this.cbFirebaseIsShort.Checked = true;
|
||||
this.cbFirebaseIsShort.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.cbFirebaseIsShort.Name = "cbFirebaseIsShort";
|
||||
this.cbFirebaseIsShort.UseVisualStyleBackColor = true;
|
||||
this.cbFirebaseIsShort.CheckedChanged += new System.EventHandler(this.cbFirebaseIsShort_CheckedChanged);
|
||||
|
|
|
@ -98,14 +98,14 @@
|
|||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="FluentFTP, Version=19.1.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FluentFTP.19.1.2\lib\net45\FluentFTP.dll</HintPath>
|
||||
<Reference Include="FluentFTP, Version=19.1.3.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FluentFTP.19.1.3\lib\net45\FluentFTP.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MegaApiClient, Version=1.6.3.409, Culture=neutral, PublicKeyToken=0480d311efbeb4e2, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MegaApiClient.1.6.3-master-409\lib\net46\MegaApiClient.dll</HintPath>
|
||||
<Reference Include="MegaApiClient, Version=1.6.3.424, Culture=neutral, PublicKeyToken=0480d311efbeb4e2, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MegaApiClient.1.6.3\lib\net46\MegaApiClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||
|
@ -115,6 +115,7 @@
|
|||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel.Web" />
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
/* https://github.com/matthewburnett */
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using ShareX.HelpersLib;
|
||||
using ShareX.UploadersLib.Properties;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Web;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ShareX.UploadersLib.URLShorteners
|
||||
|
@ -34,23 +32,29 @@ public override URLShortener CreateShortener(UploadersConfig config, TaskReferen
|
|||
public override TabPage GetUploadersConfigTabPage(UploadersConfigForm form) => form.tpFirebaseDynamicLinks;
|
||||
}
|
||||
|
||||
public class FirebaseRequest
|
||||
{
|
||||
public DynamicLinkInfo dynamicLinkInfo { get; set; }
|
||||
public Suffix suffix { get; set; }
|
||||
}
|
||||
|
||||
public class DynamicLinkInfo
|
||||
{
|
||||
public string dynamicLinkDomain { get; set; }
|
||||
public string link { get; set; }
|
||||
}
|
||||
|
||||
public class Suffix
|
||||
{
|
||||
public string option { get; set; }
|
||||
}
|
||||
|
||||
public class FirebaseResponse
|
||||
{
|
||||
public string shortLink { get; set; }
|
||||
public string previewLink { get; set; }
|
||||
}
|
||||
|
||||
public class FirebaseRequest
|
||||
{
|
||||
public string longDynamicLink { get; set; }
|
||||
public FirebaseRequestSuffix suffix { get; set; }
|
||||
}
|
||||
|
||||
public class FirebaseRequestSuffix
|
||||
{
|
||||
public string option { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FirebaseDynamicLinksURLShortener : URLShortener
|
||||
{
|
||||
public string WebAPIKey { get; set; }
|
||||
|
@ -61,9 +65,16 @@ public override UploadResult ShortenURL(string url)
|
|||
{
|
||||
UploadResult result = new UploadResult { URL = url };
|
||||
|
||||
string RequestUrl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks";
|
||||
string longDynamicLink = URLHelpers.ForcePrefix(DynamicLinkDomain + ".app.goo.gl/?link=" + HttpUtility.UrlEncode(url));
|
||||
string option;
|
||||
FirebaseRequest request = new FirebaseRequest
|
||||
{
|
||||
dynamicLinkInfo = new DynamicLinkInfo
|
||||
{
|
||||
dynamicLinkDomain = DynamicLinkDomain + ".app.goo.gl",
|
||||
link = url
|
||||
}
|
||||
};
|
||||
|
||||
string requesturl = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks";
|
||||
|
||||
Dictionary<string, string> args = new Dictionary<string, string>
|
||||
{
|
||||
|
@ -72,24 +83,15 @@ public override UploadResult ShortenURL(string url)
|
|||
|
||||
if (IsShort)
|
||||
{
|
||||
option = "SHORT";
|
||||
}
|
||||
else
|
||||
request.suffix = new Suffix
|
||||
{
|
||||
option = "UNGUESSABLE";
|
||||
}
|
||||
|
||||
FirebaseRequest request = new FirebaseRequest
|
||||
{
|
||||
longDynamicLink = longDynamicLink,
|
||||
suffix = new FirebaseRequestSuffix
|
||||
{
|
||||
option = option
|
||||
}
|
||||
option = "SHORT"
|
||||
};
|
||||
}
|
||||
|
||||
string json = JsonConvert.SerializeObject(request);
|
||||
result.Response = SendRequest(HttpMethod.POST, RequestUrl, json, ContentTypeJSON, args);
|
||||
string requestjson = JsonConvert.SerializeObject(request);
|
||||
|
||||
result.Response = SendRequest(HttpMethod.POST, requesturl, requestjson, ContentTypeJSON, args);
|
||||
result.ShortenedURL = JsonConvert.DeserializeObject<FirebaseResponse>(result.Response).shortLink;
|
||||
|
||||
return result;
|
||||
|
|
|
@ -441,7 +441,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
|
|||
|
||||
public string FirebaseWebAPIKey = "";
|
||||
public string FirebaseDynamicLinkDomain = "";
|
||||
public bool FirebaseIsShort = true;
|
||||
public bool FirebaseIsShort = false;
|
||||
|
||||
#endregion Firebase Dynamic Links
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="FluentFTP" version="19.1.2" targetFramework="net462" />
|
||||
<package id="MegaApiClient" version="1.6.3-master-409" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="FluentFTP" version="19.1.3" targetFramework="net462" />
|
||||
<package id="MegaApiClient" version="1.6.3" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
<package id="SSH.NET" version="2016.1.0" targetFramework="net462" />
|
||||
</packages>
|
|
@ -98,7 +98,7 @@
|
|||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualBasic" />
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net462" />
|
||||
<package id="ZXing.Net" version="0.16.2" targetFramework="net462" />
|
||||
</packages>
|
Loading…
Reference in a new issue