Developer/Build Requirements

I haven't started using NuGet for these things, but it is a consideration.

Resources

These don't need to be installed (But we need to be aware of any updates. Best to "Follow" the projects on CodePlex to check for any new releases):

Independent development

The project is signed with a password protected strong name key file.
If you wish to work with the SEToolbox codebase independently of Codeplex, then you need to open the project properties of the "SEToolbox.ImageShaders" and "SEToolbox.ImageLibrary" projects, and turn off signing.
This will allow you to build in Visual Studio without problems.

Debugging

Always make sure you have copied the current SandBox and VRage assemblies from the "Steam\SteamApps\common\SpaceEngineers\Bin64\" folder to the solution's References folder.

Debugging with local Assemblies references :
  1. Open the SEToolbox project properties.
  2. Select the "Debug" tab.
  3. Add the "/OLDDLL" to the Command Line Arguments. This is avoid issues with the other method for linking to assemblies.

Unable to view or inspect any of the MyObjectBuilder objects from the Space Engineers assemblies?
Because of how the assemblies are loaded, sometimes Visual Studio does not allow you to inspect the MyObjectBuilder objects. To force it, there are a few lines in the CoreToolbox.cs you can uncomment. They are approximately at line 155, and have the string "//#warning Force the local debugger to load the Types allowing inspection."

Cutting a Release

Generally the release goes a lot like this.
Testing the changes:
  1. Keen release their major update.
  2. I read the change log (which doesn't always include all changes) and watch the video.
  3. There may be posts on the forum regarding issues launching or running SEToolbox already. (A very good indication of what might need fixing).
  4. Allow Steam to download the Space Engineers update.
  5. Make sure you have the latest source on SEToolbox. Set the configuration as "Debug", and make sure all tests pass. If there are major changes to Space Engineers, the tests will fail.
  6. With multiple people working, this would be time to create any issues on Codeplex, and label it properly. Update to SE Release 01.034.007, or some such.
  7. Check out the SandBox and VRage assemblies in the "References" folder.
  8. Copy all updated SandBox and VRage assemblies from the "Steam\SteamApps\common\SpaceEngineers\Bin64\" folder to the solution's References folder. I have a small batch file to do this. ALWAYS use the "Bin64" as the source, as assemblies there are compiled as "AnyCPU". Files in the "Bin" path are compiles x86, and I don't want to have to SEToolbox compile 2 releases.
  9. Compile and check for issues.
  10. Fix any bugs caused by the updated binaries. Test any parts of the application that may be affected. The usual trouble areas are, the drag-drop stops working between two running Toolboxes, the Component List may not show up, browsing for existing save games does not work.
  11. Run all tests, and make sure they pass.
  12. Run the T4 template in "SEToolbox\Interop\SubtypeId.tt". The resultant output (when comparing to the previous version) will indicate any new cubes (somewhat exciting).
  13. Updated the version information in "SEToolbox\Properties\AssemblyInfo.cs" and "SEToolboxSetup\Product.wxs". They should match. The number is described in the AssemblyInfo, but I'll repeat it here. The first 3 numbers to match the current Space Engineers release. The Forth number to indicate my own build of SEToolbox to match that release. Always check the current version by running Space Engineers.
  14. Switch the configuration to "Release". Run the tests again.
Building for Release:
  1. Open Windows Explorer and browse to the directory holding your SEToolbox source. In the root directory where the "readme.txt" is a "build.bat". Simply run it.
  2. The build should run without any issues (red lines of text). If there are red lines, you will need to investigate if it is either a code problem, or a build problem and solve as appropriate.
  3. A successful build will appear in the "bin" folder that will automatically be created. One .msi and one .zip file.
  4. Install the .msi.
  5. Test the installation, and run SEToolbox from the Start menu to make sure it works.
  6. Extract .zip, and make sure it works also.
  7. If everything is good, check in the changes to CodePlex.
Releasing:
  1. Go to SEToolbox downloads, and create a "New Release" http://setoolbox.codeplex.com/releases/
  2. Name it "SEToolbox xx.xxx.xxx Release x", where x is the version numbers. These numbers are picked up in SEToolbox when it checks for updates by using Regex, so the format has to match (4 numbers in that arrangement, but not expressly that number of digits).
  3. When typing up the release notes, it helps to look through any code changes since the last release. https://setoolbox.codeplex.com/SourceControl/list/changesets
  4. Specify the .msi file for the "Application (Runtime Binary)". Click "Add another file" and specify the .zip file.
  5. Set "Stable", "Show to Public", "Recommended Release", "Replace Recommended".
  6. Do not hit "save" yet. Copy your Release notes to the clipboard.
  7. Now hit "Save".
  8. As it uploads (I have a slow connection), go to the Keen thread for SEToolbox. http://forums.keenswh.com/post/custom-importereditor-tool-setoolbox-6638984
  9. Post an update to the thread. Add any discussion and photos you think are necessary.

Discussion threads

I discovered recently that CodePlex does not automatically subscribe you to threads as a developer. You might want to do the same.
https://setoolbox.codeplex.com/discussions?showUnansweredThreadsOnly=true

Keen Software House releases

Living in Australia, Keen usually do their release around 2AM Friday my time.
Not helpful at all, as I get up and go to work, and can't look at any issues until I get home, unless I sneak in a bit of time at work to look at any compile issues. Fixing any content that requires me to open and play the game has to wait until I get home.

Last edited Jan 4, 2016 at 7:57 AM by midspace, version 7