You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.8 KiB

  1. ---
  2. uid: articles.contributing
  3. ---
  4. # Contributing
  5. ## Prerequisites
  6. - Microsoft Visual Studio 2019 or later (2017 may work, no guarantees)
  7. - Tools for C/C++ (MSVC) v141
  8. - .NET 4.6.1 SDK and .NET 4.7.2 SDK
  9. - Beat Saber (if developing for .NET 4.5+)
  10. - Muse Dash (if developing for .NET 3.5)
  11. ## Building
  12. 1. Clone with `git clone https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded.git --recursive`
  13. 2. Create a file, `bsinstalldir.txt` in the solution root. Do NOT create this in Visual Studio; VS adds a BOM at the begginning of the file that the tools used cannot read.
  14. It should contain the path to your Beat Saber installation, using forward slashes with a trailing slash. e.g.
  15. ```
  16. C:/Program Files (x86)/Steam/steamapps/common/Beat Saber/
  17. ```
  18. If you intend to be doing .NET 3.5 centric development, you must put your Muse Dash installation folder in a file named `mdinstalldir.txt` that is otherwise identical to
  19. `bsinstalldir.txt`.
  20. 3. Open `BSIPA.sln` in Visual Studio.
  21. 4. Choose the configuration that you intend to target during development.
  22. 5. Rebuild all.
  23. When you make a change somewhere in BSIPA itself, right click on `BSIPA-Meta` and click `Build` or `Rebuild`. This sets up the output in `path/to/solution/BSIPA-Meta/bin/<Configuration>` to be what
  24. should be copied to the game directory.
  25. When making a change to Mod List, you only need to build Mod List itself. Install by copying everything in `path/to/solution/BSIPA-ModList/bin/<Configuration>` to your game
  26. directory.
  27. When building a Debug build, all referenced assemblies from Beat Saber will be copied from the install directory provided in `bsinstalldir.txt` into `Refs/`. Any new references
  28. should reference the copy in there. When building for Release, it just uses the files already in `Refs/`.