Kaynağa Gözat

Merge branch 'master' into dev

# Conflicts:
#	source/WinSCP.cbproj

Source commit: cec37b6ffde588f608efb144509a2d64193d4c2e
Martin Prikryl 4 yıl önce
ebeveyn
işleme
c528b0d76e

+ 154 - 161
dotnet/GlobalSuppressions.cs

@@ -10,166 +10,159 @@
 
 using System.Diagnostics.CodeAnalysis;
 
-[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionException")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionLocalException")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "WinSCP.SessionRemoteException")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.ElementLogReader.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
-[assembly: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "WinSCP.SynchronizationCriteria")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#Open(WinSCP.SessionOptions)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#WriteCommand(System.String)")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "~T:WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "~T:WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Scope = "type", Target = "~T:WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.ElementLogReader.Dispose")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Session.Cleanup")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames", Scope = "type", Target = "~T:WinSCP.SynchronizationCriteria")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Session.Cleanup")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Session.Open(WinSCP.SessionOptions)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Session.WriteCommand(System.String)")]
 [assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SCP")]
-[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SCP", Scope = "namespace", Target = "WinSCP")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.Session.#Open(WinSCP.SessionOptions)")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionLocalException")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionRemoteException")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SCP", Scope = "namespace", Target = "~N:WinSCP")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.Session.Open(WinSCP.SessionOptions)")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "~T:WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "~T:WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable", Scope = "type", Target = "~T:WinSCP.SessionException")]
 [assembly: SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.ChmodEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.CommandExecutionResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FailedEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FileOperationEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.FilePermissions")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OperationEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OperationResultBase")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteFileInfo")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalOperationResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.Session")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionLocalException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionOptions")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionRemoteException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SynchronizationResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TouchEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferOperationResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferOptions")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.ChmodEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.CommandExecutionResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FailedEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FileOperationEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OperationEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OperationResultBase")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemoteFileInfo")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemovalEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemovalOperationResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionLocalException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SessionRemoteException")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.SynchronizationResult")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TouchEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferOperationResult")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FailedEventHandler")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FileTransferredEventHandler")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.RemoteDirectoryInfo")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteDirectoryInfo")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemoteFileInfoCollection")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "index", Scope = "member", Target = "WinSCP.ReadOnlyInteropCollectionHelper`1.#Item[System.Int32]")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Scope = "member", Target = "WinSCP.ReadOnlyInteropCollectionHelper`1.#Item[System.Int32]")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.RemovalEventArgsCollection")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.SessionRemoteExceptionCollection")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.StringCollection")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.TransferEventArgsCollection")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo,System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersions(System.String)")]
-[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "WinSCP.Logger.#WriteLine(System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#WriteEnvironmentInfo()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.OutputDataReceivedEventHandler")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#.ctor(WinSCP.Session,System.Boolean,System.String)")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CreateEvent(System.String)")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#_ptr")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeConsole()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeChild()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeConsole()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#HasExited")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#ExitCode")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Close()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#Size")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ConsoleCommStruct.#.ctor(WinSCP.Session,Microsoft.Win32.SafeHandles.SafeFileHandle)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "WinSCP.SECURITY_ATTRIBUTES.#lpSecurityDescriptor")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "WinSCP.Job.#_handle")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "WinSCP.UnsafeNativeMethods.CloseHandle(System.IntPtr)", Scope = "member", Target = "WinSCP.Job.#Close()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Job.#.ctor()")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.OutputDataReceivedEventArgs")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "WinSCP.OutputDataReceivedEventArgs")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#.ctor(WinSCP.Session)")]
-[assembly: SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Scope = "type", Target = "WinSCP.Session")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Session.#System.Reflection.IReflect.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[])")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Session.#Cleanup()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Logger.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#OpenLog()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Close()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#LogContents()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.SessionLogReader.#LogContents()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ElementLogReader.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#.ctor()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Abort()")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetAssemblyFilePath()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.ExeSessionProcess.#AbortedOrExited()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#DoRead()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.SessionLogReader.#Cleanup()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#GetTempPath()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Session.#SetupTempPath()")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "WinSCP.Logger.#GetAssemblyFilePath()")]
-[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "CPS", Scope = "member", Target = "WinSCP.FileTransferProgressEventArgs.#CPS")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.FileTransferProgressEventArgs")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.FileTransferProgressEventHandler")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CreateFileMapping(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IntPtr,System.Int32,System.Int32,System.Int32,System.String)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#MapViewOfFile(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Int32,System.UInt32,System.UInt32,System.UIntPtr)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#UnmapViewOfFile(System.IntPtr)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CloseHandle(System.IntPtr)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CreateJobObject(System.IntPtr,System.String)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#SetInformationJobObject(System.IntPtr,WinSCP.JobObjectInfoType,System.IntPtr,System.UInt32)", Justification = "Warning is bogus.")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.TransferResumeSupport")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#CreateCounters()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#WriteCounters()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#WriteProcesses()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#WriteProcesses()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#GetProcessStartTime(System.Diagnostics.Process)")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetProcessStartTime(System.Diagnostics.Process)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#GetTotalProcessorTime(System.Diagnostics.Process)")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.Logger.#GetTotalProcessorTime(System.Diagnostics.Process)")]
-[assembly: SuppressMessage("Microsoft.Usage", "CA2217:DoNotMarkEnumsWithFlags", Scope = "type", Target = "WinSCP.FileMapAccess")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#CreateFileMapping(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IntPtr,WinSCP.FileMapProtection,System.Int32,System.Int32,System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#MapViewOfFile(Microsoft.Win32.SafeHandles.SafeFileHandle,WinSCP.FileMapAccess,System.UInt32,System.UInt32,System.UIntPtr)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke", Scope = "member", Target = "WinSCP.ExeSessionProcess.#InitializeConsole()")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke", Scope = "member", Target = "WinSCP.ExeSessionProcess.#Dispose()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Job.#.ctor(WinSCP.Logger,System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.Logger.#LastWin32ErrorMessage()")]
-[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "WinSCP.Session.#GuardProcessWithJobInternal")]
-[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "WinSCP.Session.#TestHandlesClosedInternal")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#TryCreateEvent(System.String,System.Threading.EventWaitHandle&)")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", MessageId = "System.Runtime.InteropServices.SafeHandle.DangerousGetHandle", Scope = "member", Target = "WinSCP.ExeSessionProcess.#TryCreateEvent(System.String,System.Threading.EventWaitHandle&)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.SessionOptions.#GetPassword(System.Security.SecureString)")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "0#", Scope = "member", Target = "WinSCP.SessionOptions.#ParseUrl(System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess+NoopSafeHandle.#.ctor(System.IntPtr)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CreateFileMapping(System.String)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#GetProcessWindowStation()")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#GetThreadDesktop(System.Int32)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#GetCurrentThreadId()")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.ExeSessionProcess.#CreateFileMapping(System.String)")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.Logger.#CreateCounters()")]
-[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "WinSCP.SessionLogReader.#LogContents()")]
-[assembly: SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Scope = "member", Target = "WinSCP.Session.#SessionOptionsToSwitches(WinSCP.SessionOptions,System.Boolean,System.String&,System.String&)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "WinSCP.UnsafeNativeMethods.#RegGetValue(System.UIntPtr,System.String,System.String,WinSCP.RegistryFlags,WinSCP.RegistryType&,System.IntPtr,System.UInt32&)")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#GetInstallationPath(Microsoft.Win32.RegistryHive,Microsoft.Win32.RegistryKey)")]
-[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.DoWriteLine(System.String)", Scope = "member", Target = "WinSCP.Logger.#WriteException(System.Exception)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#CombinePaths(System.String,System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#EscapeFileMask(System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#TranslateRemotePathToLocal(System.String,System.String,System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#TranslateLocalPathToRemote(System.String,System.String,System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#GetDirectoryName(System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#AddDirectorySeparator(System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "WinSCP.RemotePath.#GetFileName(System.String)")]
-[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "WinSCP.QueryReceivedEventArgs")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "WinSCP.QueryReceivedEventHandler")]
-[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "WinSCP.ExeSessionProcess.#RequestCallstack()")]
-[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "WinSCP.ExeSessionProcess.#RequestCallstack()")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.ChmodEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.CommandExecutionResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.FailedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.FileOperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.FilePermissions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.OperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.OperationResultBase")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemoteFileInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemovalEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemovalOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.Session")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SessionOptions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SynchronizationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.TouchEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.TransferEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.TransferOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.TransferOptions")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.ChmodEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.CommandExecutionResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.FailedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.FileOperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.OperationEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.OperationResultBase")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.RemoteFileInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.RemovalEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.RemovalOperationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.SessionException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.SessionLocalException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.SessionRemoteException")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.SynchronizationResult")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.TouchEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.TransferEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.TransferOperationResult")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "~T:WinSCP.FailedEventHandler")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "~T:WinSCP.FileTransferredEventHandler")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.RemoteDirectoryInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemoteDirectoryInfo")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemoteFileInfoCollection")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "index", Scope = "member", Target = "~P:WinSCP.ReadOnlyInteropCollectionHelper`1.Item(System.Int32)")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Scope = "member", Target = "~P:WinSCP.ReadOnlyInteropCollectionHelper`1.Item(System.Int32)")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.RemovalEventArgsCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.SessionRemoteExceptionCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.StringCollection")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.TransferEventArgsCollection")]
+[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "~M:WinSCP.Logger.WriteLine(System.String)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Logger.WriteEnvironmentInfo")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "~T:WinSCP.OutputDataReceivedEventHandler")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.#ctor(WinSCP.Session,System.Boolean,System.String)")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.CreateEvent(System.String)~System.Threading.EventWaitHandle")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "~F:WinSCP.ConsoleCommStruct._ptr")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.InitializeConsole")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.InitializeChild")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.InitializeConsole")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~P:WinSCP.ExeSessionProcess.HasExited")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~P:WinSCP.ExeSessionProcess.ExitCode")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.Dispose")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.Close")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~P:WinSCP.ConsoleCommStruct.Size")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ConsoleCommStruct.#ctor(WinSCP.Session,Microsoft.Win32.SafeHandles.SafeFileHandle)")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources", Scope = "member", Target = "~F:WinSCP.Job._handle")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "WinSCP.UnsafeNativeMethods.CloseHandle(System.IntPtr)", Scope = "member", Target = "~M:WinSCP.Job.Close")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.OutputDataReceivedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1408:DoNotUseAutoDualClassInterfaceType", Scope = "type", Target = "~T:WinSCP.OutputDataReceivedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
+[assembly: SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Scope = "type", Target = "~T:WinSCP.Session")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.CheckVersion(System.String,System.Diagnostics.FileVersionInfo)")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.Session.Cleanup")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.Logger.Dispose")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.SessionLogReader.OpenLog")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.Close")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.SessionLogReader.LogContents")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.SessionLogReader.LogContents")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.ElementLogReader.Dispose")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.#ctor")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.Dispose")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.Abort")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2201:DoNotRaiseReservedExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.GetAssemblyFilePath~System.String")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.AbortedOrExited~System.Boolean")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.SessionLogReader.DoRead~System.Boolean")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.SessionLogReader.Cleanup")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Session.SetupTempPath")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.WriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.Logger.GetAssemblyFilePath~System.String")]
+[assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "CPS", Scope = "member", Target = "~P:WinSCP.FileTransferProgressEventArgs.CPS")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.FileTransferProgressEventArgs")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "~T:WinSCP.FileTransferProgressEventHandler")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.UnmapViewOfFile(System.IntPtr)~System.Boolean", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.CloseHandle(System.IntPtr)~System.Int32", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.CreateJobObject(System.IntPtr,System.String)~System.IntPtr", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.SetInformationJobObject(System.IntPtr,WinSCP.JobObjectInfoType,System.IntPtr,System.UInt32)~System.Boolean", Justification = "Warning is bogus.")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.TransferResumeSupport")]
+#if !NETSTANDARD
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.CreateCounters")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.WriteCounters")]
+#endif
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Logger.WriteProcesses")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.WriteProcesses")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Logger.GetProcessStartTime(System.Diagnostics.Process)~System.Object")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.GetProcessStartTime(System.Diagnostics.Process)~System.Object")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Logger.GetTotalProcessorTime(System.Diagnostics.Process)~System.Object")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.Logger.GetTotalProcessorTime(System.Diagnostics.Process)~System.Object")]
+[assembly: SuppressMessage("Microsoft.Usage", "CA2217:DoNotMarkEnumsWithFlags", Scope = "type", Target = "~T:WinSCP.FileMapAccess")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.CreateFileMapping(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IntPtr,WinSCP.FileMapProtection,System.Int32,System.Int32,System.String)~Microsoft.Win32.SafeHandles.SafeFileHandle")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.MapViewOfFile(Microsoft.Win32.SafeHandles.SafeFileHandle,WinSCP.FileMapAccess,System.UInt32,System.UInt32,System.UIntPtr)~System.IntPtr")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.InitializeConsole")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.Dispose")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Job.#ctor(WinSCP.Logger,System.String)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.Logger.LastWin32ErrorMessage~System.String")]
+[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "~P:WinSCP.Session.GuardProcessWithJobInternal")]
+[assembly: SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "~P:WinSCP.Session.TestHandlesClosedInternal")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.TryCreateEvent(System.String,System.Threading.EventWaitHandle@)~System.Boolean")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", MessageId = "System.Runtime.InteropServices.SafeHandle.DangerousGetHandle", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.TryCreateEvent(System.String,System.Threading.EventWaitHandle@)~System.Boolean")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.SessionOptions.GetPassword(System.Security.SecureString)~System.String")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "0#", Scope = "member", Target = "~M:WinSCP.SessionOptions.ParseUrl(System.String)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.NoopSafeHandle.#ctor(System.IntPtr)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.CreateFileMapping(System.String)~Microsoft.Win32.SafeHandles.SafeFileHandle")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.GetProcessWindowStation~System.IntPtr")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.GetThreadDesktop(System.Int32)~System.IntPtr")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.GetCurrentThreadId~System.Int32")]
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.CreateFileMapping(System.String)~Microsoft.Win32.SafeHandles.SafeFileHandle")]
+#if !NETSTANDARD
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.Logger.CreateCounters")]
+#endif
+[assembly: SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "~M:WinSCP.SessionLogReader.LogContents")]
+[assembly: SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Scope = "member", Target = "~M:WinSCP.Session.SessionOptionsToSwitches(WinSCP.SessionOptions,System.Boolean,System.String@,System.String@)")]
+[assembly: SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule", Scope = "member", Target = "~M:WinSCP.UnsafeNativeMethods.RegGetValue(System.UIntPtr,System.String,System.String,WinSCP.RegistryFlags,WinSCP.RegistryType@,System.IntPtr,System.UInt32@)~System.Int32")]
+[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "WinSCP.Logger.DoWriteLine(System.String)", Scope = "member", Target = "~M:WinSCP.Logger.WriteException(System.Exception)~System.Exception")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.CombinePaths(System.String,System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.EscapeFileMask(System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.TranslateRemotePathToLocal(System.String,System.String,System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.TranslateLocalPathToRemote(System.String,System.String,System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.GetDirectoryName(System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.AddDirectorySeparator(System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1407:AvoidStaticMembersInComVisibleTypes", Scope = "member", Target = "~M:WinSCP.RemotePath.GetFileName(System.String)~System.String")]
+[assembly: SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Scope = "type", Target = "~T:WinSCP.QueryReceivedEventArgs")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1003:UseGenericEventHandlerInstances", Scope = "type", Target = "~T:WinSCP.QueryReceivedEventHandler")]
+[assembly: SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.RequestCallstack")]
+[assembly: SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "~M:WinSCP.ExeSessionProcess.RequestCallstack")]

+ 8 - 6
dotnet/Session.cs

@@ -6,9 +6,13 @@ using System.Globalization;
 using System.Runtime.InteropServices;
 using System.Threading;
 using System.Xml;
+#if !NETSTANDARD
 using Microsoft.Win32;
+#endif
 using System.Diagnostics;
+#if !NETSTANDARD
 using System.Security;
+#endif
 using System.Text.RegularExpressions;
 using System.Linq;
 
@@ -812,10 +816,6 @@ namespace WinSCP
         {
             using (Logger.CreateCallstackAndLock())
             {
-                if (stream == null)
-                {
-                    throw Logger.WriteException(new ArgumentNullException(nameof(stream)));
-                }
                 if (remoteFilePath == null)
                 {
                     throw Logger.WriteException(new ArgumentNullException(nameof(remoteFilePath)));
@@ -824,7 +824,7 @@ namespace WinSCP
                 {
                     throw Logger.WriteException(new InvalidOperationException("Already uploading from a stream"));
                 }
-                _process.StdIn = stream;
+                _process.StdIn = stream ?? throw Logger.WriteException(new ArgumentNullException(nameof(stream)));
                 try
                 {
                     remoteFilePath = RemotePath.EscapeFileMask(remoteFilePath);
@@ -1461,7 +1461,7 @@ namespace WinSCP
                                 }
                             }
 
-                            if (difference.Action == default(SynchronizationAction))
+                            if (difference.Action == default)
                             {
                                 throw Logger.WriteException(new InvalidOperationException("No action tag found"));
                             }
@@ -2479,10 +2479,12 @@ namespace WinSCP
             }
         }
 
+#if !NETSTANDARD
         private static string GetTypeLibKey(Type t)
         {
             return "CLSID\\{" + t.GUID.ToString().ToUpperInvariant() + "}\\TypeLib";
         }
+#endif
 
         FieldInfo IReflect.GetField(string name, BindingFlags bindingAttr)
         {

+ 1 - 1
dotnet/internal/ElementLogReader.cs

@@ -86,6 +86,6 @@ namespace WinSCP
         private readonly string _localName;
         private readonly int _depth;
         protected bool _read;
-        private string _token;
+        private readonly string _token;
     }
 }

+ 4 - 0
dotnet/internal/ExeSessionProcess.cs

@@ -4,12 +4,16 @@ using System.Diagnostics;
 using System.Globalization;
 using System.IO;
 using System.Threading;
+#if !NETSTANDARD
 using Microsoft.Win32;
+#endif
 using Microsoft.Win32.SafeHandles;
 using System.Runtime.InteropServices;
 using System.Reflection;
+#if !NETSTANDARD
 using System.Security.Principal;
 using System.Security.AccessControl;
+#endif
 using System.ComponentModel;
 using System.Security.Cryptography;
 

+ 0 - 1
dotnet/internal/ISessionProcess.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Diagnostics;
 
 namespace WinSCP
 {

+ 1 - 1
dotnet/internal/Job.cs

@@ -67,6 +67,6 @@ namespace WinSCP
         }
 
         private IntPtr _handle;
-        private Logger _logger;
+        private readonly Logger _logger;
     }
 }

+ 1 - 1
dotnet/internal/Logger.cs

@@ -406,7 +406,7 @@ namespace WinSCP
         private readonly Dictionary<int, int> _indents = new Dictionary<int, int>();
         private readonly object _logLock = new object();
 #if !NETSTANDARD
-        private List<PerformanceCounter> _performanceCounters = new List<PerformanceCounter>();
+        private readonly List<PerformanceCounter> _performanceCounters = new List<PerformanceCounter>();
 #endif
         private int _logLevel;
     }

+ 1 - 1
dotnet/internal/PatientFileStream.cs

@@ -148,6 +148,6 @@ namespace WinSCP
         }
 
         private FileStream _stream;
-        private Session _session;
+        private readonly Session _session;
     }
 }

+ 1 - 1
dotnet/internal/ProgressHandler.cs

@@ -17,6 +17,6 @@ namespace WinSCP
             }
         }
 
-        private Session _session;
+        private readonly Session _session;
     }
 }

+ 2 - 3
source/Console.cbproj

@@ -43,11 +43,10 @@
 		<ProjectType>CppConsoleApplication</ProjectType>
 		<SanitizedProjectName>Console</SanitizedProjectName>
 		<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-		<VerInfo_Keys>CompanyName=Martin Prikryl;FileDescription=Console interface for WinSCP;FileVersion=5.0.1.0;InternalName=console;LegalCopyright=(c) 2000-2020 Martin Prikryl;LegalTrademarks=;OriginalFilename=winscp.com;ProductName=WinSCP;ProductVersion=6.0.0.0;ReleaseType=stable;WWW=https://winscp.net/</VerInfo_Keys>
+		<VerInfo_Keys>CompanyName=Martin Prikryl;FileDescription=Console interface for WinSCP;FileVersion=6.0.0.0;InternalName=console;LegalCopyright=(c) 2000-2020 Martin Prikryl;LegalTrademarks=;OriginalFilename=winscp.com;ProductName=WinSCP;ProductVersion=6.0.0.0;ReleaseType=stable;WWW=https://winscp.net/</VerInfo_Keys>
 		<VerInfo_Locale>1033</VerInfo_Locale>
-		<VerInfo_MajorVer>5</VerInfo_MajorVer>
+		<VerInfo_MajorVer>6</VerInfo_MajorVer>
 		<VerInfo_MinorVer>0</VerInfo_MinorVer>
-		<VerInfo_Release>1</VerInfo_Release>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Cfg_1)'!=''">
 		<BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>

+ 6 - 3
source/packages/filemng/CustomDirView.pas

@@ -495,7 +495,7 @@ type
 resourcestring
   SErrorRenameFile = 'Can''t rename file or directory: ';
   SErrorRenameFileExists = 'File already exists: ';
-  SErrorInvalidName= 'Filename contains invalid characters:';
+  SErrorInvalidName = 'Filename contains invalid characters:';
   STextFileExt = 'File %s';
   STextFiles = '%u Files';
   STextDirectories = '%u Directories';
@@ -534,13 +534,16 @@ var
   DefaultExeIcon: Integer;
   UserDocumentDirectory: string;
 
+const
+  coInvalidDosChars = '\/:*?"<>|';
+  Space = ' ';
+
 implementation
 
 uses
   Math, DirViewColProperties, UITypes, Types, OperationWithTimeout, Winapi.UxTheme, Vcl.Themes;
 
 const
-  Space = ' ';
   ResDirUp = 'DIRUP%2.2d';
   ResLink = 'LINK%2.2d';
   ResBrokenLink = 'BROKEN%2.2d';
@@ -821,7 +824,7 @@ begin
   FWantUseDragImages := False;
   FAddParentDir := False;
   FullDrag := True;
-  FInvalidNameChars := '\/:*?"<>|';
+  FInvalidNameChars := coInvalidDosChars;
   FHasParentDir := False;
   FDragOnDriveIsMove := False;
   FCaseSensitive := False;

+ 0 - 2
source/packages/filemng/DirView.pas

@@ -43,8 +43,6 @@ uses
   DragDrop, Messages, ListViewColProperties, CommCtrl, DragDropFilesEx,
   FileCtrl, SysUtils, BaseUtils, Controls, CustomDriveView, System.Generics.Collections, Winapi.ShellAPI;
 
-{$I ResStrings.pas }
-
 type
   TVolumeDisplayStyle = (doPrettyName, doDisplayName); {Diplaytext of drive node}
 

+ 1 - 12
source/packages/filemng/DriveView.pas

@@ -47,8 +47,6 @@ uses
   DiscMon, IEDriveInfo, IEListView, PIDL, BaseUtils, ListExt, CustomDirView,
   CustomDriveView, System.Generics.Collections;
 
-{$I ResStrings.pas}
-
 const
   msThreadChangeDelay = 50;
 
@@ -399,9 +397,6 @@ implementation
 uses
   CompThread, PasTools, UITypes, Types, OperationWithTimeout, System.Generics.Defaults;
 
-resourcestring
-   SErrorInvalidDirName = 'New name contains invalid characters %s';
-
 type
   PInt = ^Integer;
 
@@ -803,7 +798,6 @@ end; {CanEdit}
 
 procedure TDriveView.Edit(const Item: TTVItem);
 var
-  NewDirName: string;
   SRec: TSearchRec;
   Node: TTreeNode;
   Info: string;
@@ -818,13 +812,8 @@ begin
       for i := Length(Info) downto 1 do
         System.Insert(Space, Info, i);
 
-      if Assigned(OnEdited) then
-      begin
-        NewDirName := Node.Text;
-        OnEdited(Self, Node, NewDirName);
-      end;
       if Length(Item.pszText) > 0 then
-        raise EInvalidDirName.CreateFmt(SErrorInvalidDirName, [Info]);
+        raise EInvalidDirName.Create(SErrorInvalidName + Space + Info);
       Exit;
     end;
 

+ 0 - 3
source/packages/filemng/ResStrings.pas

@@ -1,3 +0,0 @@
-resourcestring
-   coInvalidDosChars   = '\/:*?"<>|';
-   Space               = ' ';

+ 4 - 1
source/resource/Propagation.rc

@@ -72,5 +72,8 @@ BEGIN
   NEW_5_16_SYNC_CHECKLIST, "Improvements to Synchronization checklist window"
   NEW_5_16_FIND_SORT, "Find results can be sorted"
 
-  NEW_5_18_TBD, "TBD"
+  NEW_5_18_QUEUE_FILE_LIST, "A complete list of files that are queued for a transfer can be shown"
+  NEW_5_18_STREAMING, "A streaming support in scripting and .NET assembly"
+  NEW_5_18_REMOTE_SYNC, "An extension for synchronizing two remote servers"
+  NEW_5_18_TLS, "Enabled TLS 1.3 and added support for SHA-256 TLS/SSL fingerprints"
 END