mirror of https://github.com/winsw/winsw
Stop supporting .NET Framework 2.0/4.0
parent
afe25d1d82
commit
2254aa78c4
|
@ -1,7 +0,0 @@
|
||||||
<Project>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net461' or '$(TargetFramework)' == 'netcoreapp3.1'">
|
|
||||||
<DefineConstants>VNEXT</DefineConstants>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
|
@ -25,11 +25,7 @@ More info about the wrapper is available in the projects GitHub repository.
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="artifacts\WinSW.NET2.exe" target="lib\net20-full\WinSW.NET2.exe" />
|
<file src="artifacts\WinSW.NET461.exe" target="lib\net461\WinSW.NET461.exe" />
|
||||||
<file src="artifacts\WinSW.NET4.exe" target="lib\net40-full\WinSW.NET4.exe" />
|
<file src="examples\sample-allOptions.xml" target="lib\net461\WinSW.NET461.xml" />
|
||||||
<file src="artifacts\WinSW.NET461.exe" target="lib\net461-full\WinSW.NET461.exe" />
|
|
||||||
<file src="examples\sample-allOptions.xml" target="lib\net20-full\WinSW.NET2.xml" />
|
|
||||||
<file src="examples\sample-allOptions.xml" target="lib\net40-full\WinSW.NET4.xml" />
|
|
||||||
<file src="examples\sample-allOptions.xml" target="lib\net461-full\WinSW.NET461.xml" />
|
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
||||||
|
|
|
@ -46,16 +46,6 @@ jobs:
|
||||||
versionEnvVar: BuildVersion
|
versionEnvVar: BuildVersion
|
||||||
- script: dotnet test -c $(BuildConfiguration) --no-build src\Test\winswTests\winswTests.csproj
|
- script: dotnet test -c $(BuildConfiguration) --no-build src\Test\winswTests\winswTests.csproj
|
||||||
displayName: Test
|
displayName: Test
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: Publish .NET 2.0
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: artifacts\WinSW.NET2.exe
|
|
||||||
ArtifactName: WinSW.NET2.exe_$(BuildConfiguration)
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
displayName: Publish .NET 4.0
|
|
||||||
inputs:
|
|
||||||
PathtoPublish: artifacts\WinSW.NET4.exe
|
|
||||||
ArtifactName: WinSW.NET4.exe_$(BuildConfiguration)
|
|
||||||
- task: PublishBuildArtifacts@1
|
- task: PublishBuildArtifacts@1
|
||||||
displayName: Publish .NET 4.6.1
|
displayName: Publish .NET 4.6.1
|
||||||
inputs:
|
inputs:
|
||||||
|
|
|
@ -649,10 +649,8 @@ namespace winsw
|
||||||
FileName = current.MainModule.FileName,
|
FileName = current.MainModule.FileName,
|
||||||
#if NETCOREAPP
|
#if NETCOREAPP
|
||||||
Arguments = "/elevated " + string.Join(' ', args),
|
Arguments = "/elevated " + string.Join(' ', args),
|
||||||
#elif !NET20
|
|
||||||
Arguments = "/elevated " + string.Join(" ", args),
|
|
||||||
#else
|
#else
|
||||||
Arguments = "/elevated " + string.Join(" ", args.ToArray()),
|
Arguments = "/elevated " + string.Join(" ", args),
|
||||||
#endif
|
#endif
|
||||||
WindowStyle = ProcessWindowStyle.Hidden,
|
WindowStyle = ProcessWindowStyle.Hidden,
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,9 +6,7 @@ using System.Reflection;
|
||||||
using System.ServiceProcess;
|
using System.ServiceProcess;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
#if VNEXT
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
#endif
|
|
||||||
using log4net;
|
using log4net;
|
||||||
using winsw.Extensions;
|
using winsw.Extensions;
|
||||||
using winsw.Logging;
|
using winsw.Logging;
|
||||||
|
@ -190,7 +188,6 @@ namespace winsw
|
||||||
HandleFileCopies();
|
HandleFileCopies();
|
||||||
|
|
||||||
// handle downloads
|
// handle downloads
|
||||||
#if VNEXT
|
|
||||||
List<Download> downloads = _descriptor.Downloads;
|
List<Download> downloads = _descriptor.Downloads;
|
||||||
Task[] tasks = new Task[downloads.Count];
|
Task[] tasks = new Task[downloads.Count];
|
||||||
for (int i = 0; i < downloads.Count; i++)
|
for (int i = 0; i < downloads.Count; i++)
|
||||||
|
@ -229,32 +226,6 @@ namespace winsw
|
||||||
|
|
||||||
throw new AggregateException(exceptions);
|
throw new AggregateException(exceptions);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
foreach (Download download in _descriptor.Downloads)
|
|
||||||
{
|
|
||||||
string downloadMessage = $"Downloading: {download.From} to {download.To}. failOnError={download.FailOnError.ToString()}";
|
|
||||||
LogEvent(downloadMessage);
|
|
||||||
Log.Info(downloadMessage);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
download.Perform();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
string errorMessage = $"Failed to download {download.From} to {download.To}";
|
|
||||||
LogEvent($"{errorMessage}. {e.Message}");
|
|
||||||
Log.Error(errorMessage, e);
|
|
||||||
|
|
||||||
// TODO: move this code into the download logic
|
|
||||||
if (download.FailOnError)
|
|
||||||
{
|
|
||||||
throw new IOException(errorMessage, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Else just keep going
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
string? startArguments = _descriptor.StartArguments;
|
string? startArguments = _descriptor.StartArguments;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFrameworks>net20;net40;net461;netcoreapp3.1</TargetFrameworks>
|
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
@ -61,19 +61,7 @@
|
||||||
<!-- Merge plugins and other DLLs into the executable -->
|
<!-- Merge plugins and other DLLs into the executable -->
|
||||||
<Target Name="Merge" BeforeTargets="AfterBuild" Condition="'$(TargetFramework)' != 'netcoreapp3.1'">
|
<Target Name="Merge" BeforeTargets="AfterBuild" Condition="'$(TargetFramework)' != 'netcoreapp3.1'">
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net20'">
|
|
||||||
<TargetPlatform>v2</TargetPlatform>
|
|
||||||
<IdentifierSuffix>NET2</IdentifierSuffix>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net40'">
|
|
||||||
<TargetPlatform>v4</TargetPlatform>
|
|
||||||
<IdentifierSuffix>NET4</IdentifierSuffix>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net461'">
|
<PropertyGroup Condition="'$(TargetFramework)' == 'net461'">
|
||||||
<!-- v4.5+ -->
|
|
||||||
<TargetPlatform>v4.5</TargetPlatform>
|
|
||||||
<IdentifierSuffix>NET461</IdentifierSuffix>
|
<IdentifierSuffix>NET461</IdentifierSuffix>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
@ -86,13 +74,9 @@
|
||||||
<OutputAssembly>"$(ArtifactsDir)WinSW.$(IdentifierSuffix).exe"</OutputAssembly>
|
<OutputAssembly>"$(ArtifactsDir)WinSW.$(IdentifierSuffix).exe"</OutputAssembly>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net20' or '$(TargetFramework)' == 'net40'">
|
|
||||||
<InputAssemblies>$(InputAssemblies) "$(OutDir)ICSharpCode.SharpZipLib.dll"</InputAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ILMerge>$(NuGetPackageRoot)ilmerge\$(ILMergeVersion)\tools\net452\ILMerge.exe</ILMerge>
|
<ILMerge>$(NuGetPackageRoot)ilmerge\$(ILMergeVersion)\tools\net452\ILMerge.exe</ILMerge>
|
||||||
<ILMergeArgs>/targetplatform:$(TargetPlatform) /out:$(OutputAssembly) $(InputAssemblies)</ILMergeArgs>
|
<ILMergeArgs>/targetplatform:v4.5 /out:$(OutputAssembly) $(InputAssemblies)</ILMergeArgs>
|
||||||
<ILMergeCommand>"$(ILMerge)" $(ILMergeArgs)</ILMergeCommand>
|
<ILMergeCommand>"$(ILMerge)" $(ILMergeArgs)</ILMergeCommand>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
#if !VNEXT
|
|
||||||
using System.Reflection;
|
|
||||||
#endif
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
#if VNEXT
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
#endif
|
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using log4net;
|
using log4net;
|
||||||
using winsw.Util;
|
using winsw.Util;
|
||||||
|
@ -40,33 +35,13 @@ namespace winsw
|
||||||
|
|
||||||
public string ShortId => $"(download from {From})";
|
public string ShortId => $"(download from {From})";
|
||||||
|
|
||||||
|
#if NET461
|
||||||
static Download()
|
static Download()
|
||||||
{
|
{
|
||||||
#if NET461
|
|
||||||
// If your app runs on .NET Framework 4.7 or later versions, but targets an earlier version
|
// If your app runs on .NET Framework 4.7 or later versions, but targets an earlier version
|
||||||
AppContext.SetSwitch("Switch.System.Net.DontEnableSystemDefaultTlsVersions", false);
|
AppContext.SetSwitch("Switch.System.Net.DontEnableSystemDefaultTlsVersions", false);
|
||||||
#elif !VNEXT
|
|
||||||
// If your app runs on .NET Framework 4.6, but targets an earlier version
|
|
||||||
Type.GetType("System.AppContext")?.InvokeMember("SetSwitch", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new object[] { "Switch.System.Net.DontEnableSchUseStrongCrypto", false });
|
|
||||||
|
|
||||||
const SecurityProtocolType Tls12 = (SecurityProtocolType)0x00000C00;
|
|
||||||
const SecurityProtocolType Tls11 = (SecurityProtocolType)0x00000300;
|
|
||||||
|
|
||||||
// Windows 7 and Windows Server 2008 R2
|
|
||||||
if (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor == 1)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ServicePointManager.SecurityProtocol |= Tls11 | Tls12;
|
|
||||||
Logger.Info("TLS 1.1/1.2 enabled");
|
|
||||||
}
|
|
||||||
catch (NotSupportedException)
|
|
||||||
{
|
|
||||||
Logger.Info("TLS 1.1/1.2 disabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// internal
|
// internal
|
||||||
public Download(
|
public Download(
|
||||||
|
@ -144,11 +119,7 @@ namespace winsw
|
||||||
/// <exception cref="WebException">
|
/// <exception cref="WebException">
|
||||||
/// Download failure. FailOnError flag should be processed outside.
|
/// Download failure. FailOnError flag should be processed outside.
|
||||||
/// </exception>
|
/// </exception>
|
||||||
#if VNEXT
|
|
||||||
public async Task PerformAsync()
|
public async Task PerformAsync()
|
||||||
#else
|
|
||||||
public void Perform()
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
WebRequest request = WebRequest.Create(From);
|
WebRequest request = WebRequest.Create(From);
|
||||||
if (!string.IsNullOrEmpty(Proxy))
|
if (!string.IsNullOrEmpty(Proxy))
|
||||||
|
@ -195,11 +166,7 @@ namespace winsw
|
||||||
string tmpFilePath = To + ".tmp";
|
string tmpFilePath = To + ".tmp";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#if VNEXT
|
|
||||||
using (WebResponse response = await request.GetResponseAsync())
|
using (WebResponse response = await request.GetResponseAsync())
|
||||||
#else
|
|
||||||
using (WebResponse response = request.GetResponse())
|
|
||||||
#endif
|
|
||||||
using (Stream responseStream = response.GetResponseStream())
|
using (Stream responseStream = response.GetResponseStream())
|
||||||
using (FileStream tmpStream = new FileStream(tmpFilePath, FileMode.Create))
|
using (FileStream tmpStream = new FileStream(tmpFilePath, FileMode.Create))
|
||||||
{
|
{
|
||||||
|
@ -208,13 +175,7 @@ namespace winsw
|
||||||
lastModified = ((HttpWebResponse)response).LastModified;
|
lastModified = ((HttpWebResponse)response).LastModified;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if VNEXT
|
|
||||||
await responseStream.CopyToAsync(tmpStream);
|
await responseStream.CopyToAsync(tmpStream);
|
||||||
#elif NET20
|
|
||||||
CopyStream(responseStream, tmpStream);
|
|
||||||
#else
|
|
||||||
responseStream.CopyTo(tmpStream);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FileHelper.MoveOrReplaceFile(To + ".tmp", To);
|
FileHelper.MoveOrReplaceFile(To + ".tmp", To);
|
||||||
|
@ -236,18 +197,6 @@ namespace winsw
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET20
|
|
||||||
private static void CopyStream(Stream source, Stream destination)
|
|
||||||
{
|
|
||||||
byte[] buffer = new byte[8192];
|
|
||||||
int read;
|
|
||||||
while ((read = source.Read(buffer, 0, buffer.Length)) != 0)
|
|
||||||
{
|
|
||||||
destination.Write(buffer, 0, read);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CustomProxyInformation
|
public class CustomProxyInformation
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
#if VNEXT
|
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
#endif
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
#if !VNEXT
|
|
||||||
using ICSharpCode.SharpZipLib.Zip;
|
|
||||||
#endif
|
|
||||||
using winsw.Util;
|
using winsw.Util;
|
||||||
|
|
||||||
namespace winsw
|
namespace winsw
|
||||||
|
@ -481,7 +476,6 @@ namespace winsw
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if VNEXT
|
|
||||||
private void ZipOneFile(string sourceFilePath, string entryName, string zipFilePath)
|
private void ZipOneFile(string sourceFilePath, string entryName, string zipFilePath)
|
||||||
{
|
{
|
||||||
ZipArchive? zipArchive = null;
|
ZipArchive? zipArchive = null;
|
||||||
|
@ -503,33 +497,6 @@ namespace winsw
|
||||||
zipArchive?.Dispose();
|
zipArchive?.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
private void ZipOneFile(string sourceFilePath, string entryName, string zipFilePath)
|
|
||||||
{
|
|
||||||
ZipFile? zipFile = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
zipFile = new ZipFile(File.Open(zipFilePath, FileMode.OpenOrCreate));
|
|
||||||
zipFile.BeginUpdate();
|
|
||||||
|
|
||||||
if (zipFile.FindEntry(entryName, false) < 0)
|
|
||||||
{
|
|
||||||
zipFile.Add(sourceFilePath, entryName);
|
|
||||||
}
|
|
||||||
|
|
||||||
zipFile.CommitUpdate();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
EventLogger.LogEvent($"Failed to Zip the File {sourceFilePath}. Error {e.Message}");
|
|
||||||
zipFile?.AbortUpdate();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
zipFile?.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private double SetupRollTimer(TimeSpan autoRollAtTime)
|
private double SetupRollTimer(TimeSpan autoRollAtTime)
|
||||||
{
|
{
|
||||||
|
|
|
@ -94,26 +94,15 @@ namespace winsw.Util
|
||||||
|
|
||||||
string rawValue = node.GetAttribute(attributeName);
|
string rawValue = node.GetAttribute(attributeName);
|
||||||
string substitutedValue = Environment.ExpandEnvironmentVariables(rawValue);
|
string substitutedValue = Environment.ExpandEnvironmentVariables(rawValue);
|
||||||
#if NET20
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var value = Enum.Parse(typeof(TAttributeType), substitutedValue, true);
|
return (TAttributeType)Enum.Parse(typeof(TAttributeType), substitutedValue, true);
|
||||||
return (TAttributeType)value;
|
|
||||||
}
|
}
|
||||||
catch (ArgumentException ex)
|
catch (ArgumentException ex)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException("Cannot parse <" + attributeName + "> Enum value from string '" + substitutedValue +
|
throw new InvalidDataException("Cannot parse <" + attributeName + "> Enum value from string '" + substitutedValue +
|
||||||
"'. Enum type: " + typeof(TAttributeType), ex);
|
"'. Enum type: " + typeof(TAttributeType), ex);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (!Enum.TryParse(substitutedValue, true, out TAttributeType result))
|
|
||||||
{
|
|
||||||
throw new InvalidDataException("Cannot parse <" + attributeName + "> Enum value from string '" + substitutedValue +
|
|
||||||
"'. Enum type: " + typeof(TAttributeType));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net20;net40;net461;netcoreapp3.1</TargetFrameworks>
|
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
@ -38,8 +38,4 @@
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net20' or '$(TargetFramework)' == 'net40'">
|
|
||||||
<PackageReference Include="SharpZipLib" Version="0.86.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net20;net40;net461;netcoreapp3.1</TargetFrameworks>
|
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net20;net40;net461;netcoreapp3.1</TargetFrameworks>
|
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#if VNEXT
|
using System;
|
||||||
using System;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
@ -228,4 +227,3 @@ namespace winswTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#if VNEXT
|
using System;
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NUnit.Framework.Constraints;
|
using NUnit.Framework.Constraints;
|
||||||
|
@ -26,4 +25,3 @@ namespace winswTests.Util
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#if VNEXT
|
using System;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace winswTests.Util
|
namespace winswTests.Util
|
||||||
{
|
{
|
||||||
|
@ -9,4 +8,3 @@ namespace winswTests.Util
|
||||||
dateTime.AddTicks(-(dateTime.Ticks % TimeSpan.TicksPerSecond));
|
dateTime.AddTicks(-(dateTime.Ticks % TimeSpan.TicksPerSecond));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net40;net461;netcoreapp3.1</TargetFrameworks>
|
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
|
|
||||||
<RootNamespace>winswTests</RootNamespace>
|
<RootNamespace>winswTests</RootNamespace>
|
||||||
|
|
Loading…
Reference in New Issue