Open HeuristicLab-Trac-Bot opened 6 years ago
Necessary pre-conditions:
- Split PluginInfrastructure in two plugins to remove dependency on Windows.Forms (see #2522)
- Remove Image property in Item to remove dependency on System.Drawing (some efforts are underway to support System.Drawing on .NET core, https://github.com/dotnet/corefx/issues/20325)
If I read the issue correctly you should use one of the compatibility packages on nuget if you want System.Drawing support, for instance System.Drawing.Common + System.Drawing.Primitives. There are more, but they don't look so good to me (CoreCompat.System.Drawing and CoreCompat.System.Drawing.v2).
PortabilityReport.xlsx
(44.5 KiB).Net Core 3.0 Portability Analyzer Report
I assign this ticket to dpiringe as he will look into this in his internship.
I will recreate this branch from [16144/branches/2522_RefactorPluginInfrastructure] and reapply the changes from r16143.
r16145 (not migrated): deleted branch [15961/branches/2924-dotnet-core]
r16854: changed projects to reference
System.Drawing.Common
package instead ofMicrosoft.Windows.Compatibility
package
r16857: separated PasswordDialog from
HeuristicLab.Clients.Common
into new Project calledHeuristicLab.PasswordDialog
and migratedHeuristicLab.Clients.Common
to .NET Standard
- migrated PluginInfrastructure to .NET Standard
- created a new .NET Core project
HeuristicLab.PluginInfrastructure.Runner
, which contains the logic to load and isolate assemblies, based on the new interfaces fromHeuristicLab.PluginInfrastructure
- recycled old plugin validation code
r16965: changed project
HeuristicLab.Persistence
to be .net core compatible
- merged projects
HeuristicLab.PluginInfrastructure.Runner
andHeuristicLab.PluginInfrastructure
- applied changes of code reviews (13.05.2019 and 22.05.2019) -> the old
Runner
is nowRunnerHost
and uses aRunner
, which is executed on the child process- added
Type GetType(string)
toIApplicationManager
and implemented it forLightweightApplicationManager
- removed
IActivator
andIActivatorContext
- deleted unused types like
PluginDescriptionIterator
- added CLI Framework
HeuristicLab.CommandLineInterface
- added definition language test project
HeuristicLab.DefinitionLanguage
- added test project
HeuristicLab.DynamicAssemblyTestApp
, for PluginInfrastructure testing- changed project
HeuristicLab
to .NET Core and used it to create a CLI-Tool with the new CLI Framework- added Docker support to
HeuristicLab
- added
IRunnerHost.cs
... forgot last commit- changed
DockerRunnerHost
andNativeRunnerHost
toHeuristicLab-3.3.exe
, was a little test project before- added new solution file
HeuristicLab 3.3 No Views.sln
, where all view projects are unloaded at start
- changed the use of
AppDomain.CurrentDomain.BaseDirectory
toDirectory.GetCurrentDirectory()
in projectsHeuristicLab.MathJax
andHeuristicLab.Problems.GeneticProgramming
, this change helps to load these plugins correctly with the new PluginInfrastructure- deleted obsolete files from folder
HeuristicLab/3.3/Properties
and addedlaunchSettings.json
for docker
r16990: removed unused NuGet package references and migrated CodeDom NuGet package from packages.config to PackageReference format
- removed unused NuGet packages for Projects:
HeuristicLab.Visualization.ChartControlsExtensions-3.3
HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3
HeuristicLab.Problems.DataAnalysis.Views-3.4
HeuristicLab.Optimizer-3.3
- updated NuGet package
System.Drawing.Common
from 4.5.0 to 4.5.1 for ProjectHeuristicLab.Problems.DataAnalysis.Views-3.4
- added NuGet PackageReference
Microsoft.Win32.Registry.AccessControl
for ProjectHeuristicLab.Problems.ExternalEvaluation.Scilab-3.3
- added Key Files for Projects:
HeuristicLab.DynamicAssemblyTestApp
HeuristicLab.DefinitionLanguage
HeuristicLab.CommandLineInterface
- added
IEnumerable<T> GetInstances<T>(params object[] args) where T: class
andIEnumerable<object> GetInstances(Type type, params object[] args)
method toIApplicationManager
and implemented them inLightweightApplicationManager
-> to instantiate types with specific constructor arguments- added
RunnerState State { get; }
property inIRunnerHost
, was already inRunnerHost
- added user authentication for
NativeRunnerHost
- added optional check for a running docker daemon and available image for type
DockerRunnerHost
+ ExceptionDockerException
- added caching of the saved
IApplication
inApplicationRunner
to prevent a new instance every get call- removed
System.ServiceModel.Primitives
NuGet package- lots of formatting
- in project
HeuristicLab.CommandLineInterface
changed output for options -> hidden options are not shown in the help box anymore- in project
HeuristicLab.DynamicAssemblyTestApp
:
- added
ApplicationAttributes
- added full cancel/pause/resume support for class
AppTest
to test the same behaviour between main and child process- in project
HeuristicLab
:
- changed auto generated Dockerfile -> only copies necessary projects -> speeds up the build process
- in file
HeuristicLab-3.3.csproj
:- changed
DockerDefaultTargetOS
to Linux- removed reference
HeuristicLab.DefinitionLanguage
- added icon and manifest
- deleted folder
Properties
with filelaunchSettings.json
- changed the direct access to ApplicationTypes for
OptimizeCommand
andInspectCommand
to new methodIApplicationManager.GetInstances<T>(params object[] args)
- added build script for docker image
dockerImageBuild.ps1
- some changes in
CLIApplication.cs
to reduce unnecessary allocation of string objects- renamed
AppTest
toConsoleOptimizer
and fixed race condition- replaced enum
RunnerJob
with classRunnerMessage
for more control of saved data- changed usage of
BinaryFormatter
withHEAL.Attic
, following types are nowStorable
:
ConsoleOptimizer
InspectApplication
ApplicationBase
ApplicationRunner
AssemblyInfo
Runner
UniPath
RunnerMessage
- switched
QuietMode
fromApplicationRunner
toIRunner
DockerRunnerHost
can now automatically build docker images for linux and windows containers (also identifies which container type is active) -> removes the condition to have the image preinstalled
- to achieve this, there are two new folders
DockerLinuxBuild
andDockerWindowsBuild
included in build output, which include Dockerfiles to build images for linux and windows container- added NuGet package
System.CodeDom
to projectHeuristicLab.Scripting-3.3
- added method
Send(RunnerMessage)
toIRunnerHost
and transferred methodsPause
andResume
toIRunner
- added internal reference of
RunnerHost
inRunner
- added abstract method
SendMessage(RunnerMessage)
inRunnerHost
which gets called from methodSend(RunnerMessage)
- because of a Google.Protobuf "bug", RunnerMessages cannot get serialized/deserialized directly on stream -> workaround with a byte array, which gets written and read
- additionally, the length of the array gets sent first (length as integer -> 4 bytes)
- static method in
RunnerMessage
to read a message from a stream- the method
SendMessage(RunnerMessage)
inRunnerHost
implements this functionality
- added base attribute
CLIBaseAttribute
for CLI attributes, which contains the propertyDescription
- changed inheritance from
Attribute
toCLIBaseAttribute
for types:CommandAttribute
,OptionAttribute
andValueAttribute
- added comment in
RunnerHost
- renamed
HeuristicLab.DynamicAssemblyTestApp
toHeuristicLab.ConsoleApplications
- incl. Namespace and plugin name
- renamed
InspectApplication
toConsoleInspector
- renamed
HeuristicLab.DynamicAssemblyTestApp
toHeuristicLab.ConsoleApplications
on folder/solution level- changed references from
HeuristicLab.DynamicAssemblyTestApp
toHeuristicLab.ConsoleApplications
inHeuristicLab-3.3.csproj
- removed a blank line in
InspectCommand.cs
- removed
BuildCommand.cs
and projectHeuristicLab.DefinitionLanguage
, because it was only a test- removed reference
BuildCommand
inApplicationCommand
- removed reference in
HeuristicLab 3.3.sln
to previous deleted projectHeuristicLab.DefinitionLanguage
Issue migrated from trac ticket # 2924
milestone: HeuristicLab 4.x Backlog | component: General | priority: medium
2018-06-17 07:28:07: @gkronber created the issue