diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -18,3 +18,12 @@ MonoPlay/obj/
Implab.Test/Implab.Format.Test/bin/
Implab.Test/Implab.Format.Test/obj/
*.suo
+Implab.Format.Test/bin/
+Implab.Format.Test/obj/
+packages/
+Implab.Playground/obj/
+Implab.Playground/bin/
+Implab.ServiceHost/bin/
+Implab.ServiceHost/obj/
+Implab.ServiceHost.Test/bin/
+Implab.ServiceHost.Test/obj/
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -1,1 +1,6 @@
f1da3afc3521e0e1631ac19e09690bc0a241841a release v2.1
+34df34841225f14ec65f4a5f28585d32b55829ad v3.0.1-beta
+547a2fc0d93ea5f867c778d7eeaa5888cc24fb9e v3.0.6
+f1696cdc3d7a5a9e19569567722285926c5d61b0 v3.0.8
+74e048cbaac8cdd5a0825b1fd8b47dd932a05ae8 v3.0.10
+95896f882995c74202bded87392585d287b16e82 v3.0.14
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,18 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": ".NET Core Launch (console)",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ "program": "${workspaceRoot}/Implab.Playground/bin/Debug/netcoreapp2.0/Implab.Playground.dll",
+ "args": [
+ "-f", "netcoreapp2.0"
+ ],
+ "cwd": "${workspaceRoot}/Implab.Playground",
+ "stopAtEntry": false,
+ "console": "internalConsole"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,12 @@
+// Поместите параметры в этот файл, чтобы перезаписать параметры по умолчанию и пользовательские параметры.
+{
+ "files.exclude": {
+ "**/.git": true,
+ "**/.svn": true,
+ "**/.hg": true,
+ "**/CVS": true,
+ "**/.DS_Store": true,
+ "**/bin": true,
+ "**/obj": true
+ }
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,37 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "0.1.0",
+ "command": "dotnet",
+ "args": [
+ ],
+ "showOutput": "silent",
+ "tasks": [
+ {
+ "taskName": "build",
+ // Show the output window only if unrecognized errors occur.
+ "showOutput": "always",
+ // Use the standard MS compiler pattern to detect errors, warnings and infos
+ "problemMatcher": "$msCompile",
+
+ "args" : [
+ "/p:Configuration=Debug"
+ ]
+ },
+ {
+ "taskName": "clean",
+ // Show the output window only if unrecognized errors occur.
+ "showOutput": "always",
+ // Use the standard MS compiler pattern to detect errors, warnings and infos
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "taskName": "test",
+ "isTestCommand": true,
+ // Show the output window only if unrecognized errors occur.
+ "showOutput": "always",
+ // Use the standard MS compiler pattern to detect errors, warnings and infos
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Implab.Diagnostics.Interactive/Implab.Diagnostics.Interactive.csproj b/Implab.Diagnostics.Interactive/Implab.Diagnostics.Interactive.csproj
deleted file mode 100644
--- a/Implab.Diagnostics.Interactive/Implab.Diagnostics.Interactive.csproj
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {1DB7DB0C-8AA9-484B-A681-33AE94038391}
- Library
- Properties
- Implab.Diagnostics.Interactive
- Implab.Diagnostics.Interactive
- v4.5
- 512
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- TraceForm.cs
-
-
-
-
-
- {F550F1F8-8746-4AD0-9614-855F4C4B7F05}
- Implab
-
-
-
-
- TraceForm.cs
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Implab.Diagnostics.Interactive/InteractiveListener.cs b/Implab.Diagnostics.Interactive/InteractiveListener.cs
deleted file mode 100644
--- a/Implab.Diagnostics.Interactive/InteractiveListener.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using Implab.Parallels;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace Implab.Diagnostics.Interactive
-{
- public class InteractiveListener: ListenerBase
- {
- TraceForm m_form;
-
- SynchronizationContext m_syncGuiThread;
- readonly Promise m_guiStarted = new Promise();
-
- readonly IPromise m_guiFinished;
- // readonly IPromise m_workerFinished = new Promise