So we are now into the 11th post. There are only two more to go after this one. One with some more functionality and one as a summary. In the last post we installed OpenIDE and showed the very basics of its functionality, adding a file to an existing project.
OpenIDE can do much more than this. It has most support for sln/prj that you will need. Let’s start by making a new project.
greg@goblin:~/src/foo$ oi create console src/HelloConsole Created src/HelloConsole greg@goblin:~/src/foo$ ls src greg@goblin:~/src/foo/src$ ls HelloConsole.csproj Program.cs Properties
This will create a proejct from a template. The following are the available templates (listed from help).
create : Uses the create template to create what ever project related specified by the template console : Creates a new C# console application ITEM_NAME : The name of the Project/Item to create library : Creates a new C# library project ITEM_NAME : The name of the Project/Item to create service : Creates a new C# windows service ITEM_NAME : The name of the Project/Item to create
You could remove Program.cs with oi deletefile foo/Program.cs if you wanted and it would also be removed from the project as well.
You can create your own templates as well they are just scripts. This applies to both new items and project templates. If for example you wanted to make a custom item for a new item (say a custom xunit testfixture).
Go to your OpenIDE release. cd .OpenIDE/languages/C#-files/
You will see here there is create and new. These hold the templates for the create and new commands they are implemented as python but can be scripted in any language
As an example here is the template for a new interface
#!/usr/bin/env python import sys if __name__ == "__main__": if sys.argv[1] == 'get_file_extension': print(".cs") elif sys.argv[1] == 'get_position': print("6|3") elif sys.argv[1] == 'get_definition': print("Creates an new C# interface") else: classname = sys.argv[1] namespace = sys.argv[2] parameterfile = sys.argv[3] print("using System;") print("") print("namespace " + namespace) print("{") print(" interface " + classname) print(" {") print(" }") print("}")
and here is the template for a new Console Application.
#!/usr/bin/env python import sys from files.copydir import copy as copydir if __name__ == "__main__": if sys.argv[1] == 'get_file': print("Program.cs") elif sys.argv[1] == 'get_position': print("8|3") elif sys.argv[1] == 'get_definition': print("Creates a new C# console application") else: copydir("console", sys.argv[1])
There is still much that can be added to OpenIDE (and it does a ton of other things we have not covered). But in general it can get you around the issues of dealing with project and solution files including references.