Changes between Version 15 and Version 16 of Documentation/DevelopmentCenter/CreateNewPluginUsingVS
- Timestamp:
- 06/26/14 19:26:27 (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Documentation/DevelopmentCenter/CreateNewPluginUsingVS
v15 v16 59 59 [[Image(solution.png)]] 60 60 61 Every !HeuristicLab plugin needs a Plugin file. This file contains information about the plugin itself (Name, Filename, Version) and it's dependencies. 62 The dependencies are used by the plugin infrastructure to check if all required plugins for a certain plugin are found. 63 Therefore write the following code in your Plugin.cs file: 61 Every HeuristicLab plugin needs a Plugin file. This file contains information about the plugin itself (Name, Filename, Version) and it's dependencies. The dependencies are used by the plugin infrastructure to check if all required plugins for a certain plugin are found. Therefore we will write the following code in our Plugin.cs file: 64 62 65 {{{#!csharp 66 63 {{{ 64 #!csharp 67 65 using HeuristicLab.PluginInfrastructure; 68 66 69 namespace HeuristicLab. Algorithms.MyAlgorithm{70 [Plugin("HeuristicLab. Algorithms.MyAlgorithm", "1.0.0.0")]71 [PluginFile("HeuristicLab. Algorithms.MyAlgorithm.dll", PluginFileType.Assembly)]72 public class MyAlgorithmPlugin : PluginBase {67 namespace HeuristicLab.GreatIdea.ThePlugin { 68 [Plugin("HeuristicLab.GreatIdea.ThePlugin", "Provides an implementation of a great idea", "3.3.9.0")] 69 [PluginFile("HeuristicLab.GreatIdea.ThePlugin.dll", PluginFileType.Assembly)] 70 public class Plugin : PluginBase { 73 71 } 74 72 } 73 }}} 75 74 76 }}} 75 '''Important''': The plugin class needs to derive from HeuristicLab.PluginInfrastructure.PluginBase so that the dll is realized as a plugin. The attributes specify the details of the plugin and which files it provides. The filename given in PluginFile has to be the same as the assembly output filename in the "Application" tab of the project's properties. 77 76 78 77 '''Important''': Changing major or minor version numbers in the course of development marks a breaking change to previously saved files. If HeuristicLab wants to load an item of a plugin with version 3.3.8 it will accept the same plugin in version 3.3.9 to open it. However, it will reject the plugin when its major or minor is different (e.g. 3.2.7, 3.4.3 or 4.0.1). The "Assembly file version" is not used by HeuristicLab and can be set without any restrictions. 79 78 80 === Build path === 81 The last step is to adjust the output path for the plugin. Because we don't want to copy the plugin file by hand to the HeuristicLab bin directory, we set the output path to this location so that it gets directly built there. Right click on your project, choose Properties and then the Build register card: 79 == Testing the plugin == 82 80 83 [[Image(output_path.png)]] 84 85 The output path is set as a relative path. This makes it possible for other people who may have a different directory layout (e.g. no C:\HL\) to also build the project. 86 87 88 == Testing the plugin == 89 You should now be able to compile your project and find your plugin file in the HeuristicLab bin folder. To test if everything works and the plugin infrastructure recognizes the plugin, start !HeuristicLab an double click the Plugin Manager application in the Starter dialog. Your plugin should be listed under "Active Plugins": 90 81 * Build the project and press <Ctrl+F5> to start it without a debugger attached 82 * You will see the starter window again, but you already know the switches to hide it 83 * Inside the starter open the "Plugin Manager" and see that it is correctly loaded 91 84 92 85 [[Image(plugin_manager.png)]] 93 86 94 == Where to go from here == 95 Take a look at [[wiki:UsersHowtosImplementAnAlgorithm| this page]] which describes how to create a basic HL algorithm. 87 Now we have created an empty plugin that we can use to implement a new great idea. Please refer to the [[Documentation]] pages and the various HowTos on how to write views, operators, algorithms, etc. 96 88 97 89