You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: A guide on migrating a MonoGame v3.8.0 project to the current version of MonoGame.
2
+
title: Upgrading MonoGame from 3.8.x to latest
3
+
description: A guide on upgrading a MonoGame v3.8 project to the current 3.8.4.1+ releases of MonoGame.
4
4
---
5
5
6
-
Migrating from 3.8.0 should be straightforward for most platforms.
6
+
Upgrading existing projects from earlier 3.8 releases should be straightforward for most platforms.
7
7
8
-
The major difference is that 3.8.1 now requires .NET 6 and Visual Studio 2022. You can follow the [environment setup tutorial](../getting_started/index.md) to make sure that you are not missing any components.
8
+
> [!NOTE]
9
+
> If you are migrating/upgrading from [XNA](./migrate_xna.md) or [MonoGame 3.7 or earlier](./migrate_37.md) then check the dedicated guides for those actions before returning here.
10
+
11
+
- The critical difference from pre 3.8.2 builds, [is that the MGCB Editor is no longer a global .NET tool](#addupdate-dotnet-toolsjson-configuration) and the MGCB editor is now included as part of the specific project through the use of the dotnet tooling configuration `dotnet-tools.json` file located in the `.config` folder in your solution/project.
12
+
13
+
- The major difference from 3.8.4 onwards is that we recommend using .NET 9 in your client project, but it is not mandatory, we are also simplifying the `csproj` configuration to reduce management for developers from 3.8.4.1.
9
14
10
-
The MGCB Editor is no longer a global .NET tool and we recommend that you use the new Visual Studio 2022 extension which helps with accessing it without the need of CLI commands.
15
+
> For iOS/Android however, DotNet 9 at a minimum is Mandatory, [see details here](#iosipados-and-android-considerations).
16
+
17
+
You can follow the [environment setup tutorial](../getting_started/index.md) to make sure that you are not missing any components.
11
18
12
19
> [!NOTE]
13
-
> It is also recommended that you uninstall the older global versions of the .NET tools as described below.
20
+
> If you are using Visual Studio 2022, we recommend that you use the MonoGame extension which helps with accessing the MGCB editor without the need of CLI commands.
14
21
15
-
## WindowsDX, DesktopGL, and UWP
22
+
The process of updating your project should be fairly quick and painless without having to change your code or your content project.
16
23
17
-
Upgrading from 3.8.0 should be as straightforward as upgrading your ```TargetFramework``` and MonoGame version.
24
+
## Contents
18
25
19
-
Edit your csproj file to change your ```TargetFramework```:
-[Remove `RestoreDotNetTools` section from csproj](#remove-restoredotnettools-section-from-csproj)
30
+
-[iOS/iPadOS, and Android Considerations](#iosipados-and-android-considerations)
20
31
21
-
```xml
22
-
<TargetFramework>net6.0</TargetFramework>
23
-
```
32
+
## Updating the DotNet Target Framework
24
33
25
-
Then edit your MonoGame ```PackageReference``` to point to 3.8.1:
34
+
Modern MonoGame projects now use the DotNet framework (older projects used to rely on the NetCore/NetFramework libraries). As MonoGame has used DotNet project templates since 3.8.x, you only need to update the `TargetFramework` element of any `csproj` files referencing MonoGame libraries, namely:
35
+
36
+
- Replace any `<TargetFramework>` entries with the following:
### Accessing MGCB and MCGB Editor without a global tool
42
+
> [!NOTE]
43
+
> Using `DotNet 9` is only a **recommendation**, you can use any version of DotNet (from 8.0 and above) so long as it supports the MonoGame DotNet 8 dependency. This includes the upcoming DotNet 10 LTS.
33
44
34
-
The MGCB Editor is no longer a .NET global tool, and does not need to be installed or registered. When migrating from 3.8.0, it is recommended that you **uninstall** the global versions of the tools. You can accomplish that with these commands:
45
+
Make sure to update any and all projects in your solution, especially you have a multi-project solution similar to those in the [MonoGame.Samples](https://github.com/MonoGame/MonoGame.Samples/tree/3.8.4/Platformer2D)
35
46
36
-
```sh
37
-
dotnet tool uninstall dotnet-mgcb -g
38
-
dotnet tool uninstall dotnet-2mgfx -g
39
-
dotnet tool uninstall dotnet-mgcb-editor -g
40
-
```
47
+
## Update MonoGame references
48
+
49
+
Make sure you update the MonoGame references to the latest version, this can be achieved by either:
50
+
51
+
- Editing the `csproj` files that reference MonoGame to the latest version.
52
+
53
+
> [!NOTE]
54
+
> The MonoGame templates set the Version number as `Version="3.8.*"`, this means that it will use the LATEST public version of MonoGame (not including preview releases) that is available.
55
+
>
56
+
> However, this does mean your `tools` configuration can become out of sync with your project and potentially cause issue.
41
57
42
-
::: tip
43
-
**Do not** run the ``` dotnet tool install ``` on 3.8.1, as it would break 3.8.1.
44
-
:::
58
+
- Use the [Updating NuGet package dependencies](../getting_to_know/howto/HowTo_Install_Preview_Release.md#updating-nuget-package-dependencies) documentation as part of the "Preview Release installation instructions", which states you should run the following commands (the example is for `DesktopGL`, use other platforms accordingly):
45
59
46
-
You will also need to setup a dotnet-tools configuration file.
- Next to your ```.csproj```create a folder named ```.config```
49
-
- Add a file within the folder named ```dotnet-tools.json``` with the following content:
65
+
> [!NOTE]
66
+
> The `MonoGame.Content.Builder.Task` is only needed for client projects and not libraries.
50
67
51
-
```json
68
+
This will ensure your project is using the intended version of MonoGame.
69
+
70
+
> [!IMPORTANT]
71
+
> Always ensure your `dotnet-tools.json` version matches any updates to the version of MonoGame you are using, as detailed in the next section.
72
+
73
+
## Add/Update `dotnet-tools.json` Configuration
74
+
75
+
MonoGame DotNet projects currently **Require** DotNet tools configuration to be able to locate and run the `MGCB` editor which is installed locally per project (preventing issues when working with multiple projects using different versions of MonoGame).
76
+
77
+
> [!IMPORTANT]
78
+
> The MGCB Editor is no longer a .NET global tool, and does not need to be installed or registered separately. When migrating from 3.8.0, it is recommended that you **uninstall** the global versions of the tools. You can accomplish that with these commands:
79
+
>
80
+
> ```sh
81
+
> dotnet tool uninstall dotnet-mgcb -g
82
+
> dotnet tool uninstall dotnet-2mgfx -g
83
+
> dotnet tool uninstall dotnet-mgcb-editor -g
84
+
> ```
85
+
86
+
You can either copy the `config` folder with the configuration from a new project template (e.g. `dotnet new mgdesktopgl -o <project name>`),
87
+
or alternatively you can do the following:
88
+
89
+
- Create a new folder in the root of your project named `.config`.
90
+
- Add a new file called `dotnet-tools.json` and replace its contents with the following:
91
+
92
+
```text
52
93
{
53
94
"version": 1,
54
95
"isRoot": true,
55
96
"tools": {
56
97
"dotnet-mgcb": {
57
-
"version": "3.8.1.303",
98
+
"version": "3.8.4.1",
58
99
"commands": [
59
100
"mgcb"
60
101
]
61
102
},
62
103
"dotnet-mgcb-editor": {
63
-
"version": "3.8.1.303",
104
+
"version": "3.8.4.1",
64
105
"commands": [
65
106
"mgcb-editor"
66
107
]
67
108
},
68
109
"dotnet-mgcb-editor-linux": {
69
-
"version": "3.8.1.303",
110
+
"version": "3.8.4.1",
70
111
"commands": [
71
112
"mgcb-editor-linux"
72
113
]
73
114
},
74
115
"dotnet-mgcb-editor-windows": {
75
-
"version": "3.8.1.303",
116
+
"version": "3.8.4.1",
76
117
"commands": [
77
118
"mgcb-editor-windows"
78
119
]
79
120
},
80
121
"dotnet-mgcb-editor-mac": {
81
-
"version": "3.8.1.303",
122
+
"version": "3.8.4.1",
82
123
"commands": [
83
124
"mgcb-editor-mac"
84
125
]
@@ -87,23 +128,34 @@ You will also need to setup a dotnet-tools configuration file.
87
128
}
88
129
```
89
130
90
-
Please note that you cannot use the ```3.8.1.*``` wildcard in the ```dotnet-tools.json``` file (tool versions have to be fully qualified). We strongly recommand that the versions match the MonoGame version referenced in your ```.csproj``` (if you are using the ```*``` wildcard, make sure that they do not end up mismatching if the nugets are updated without you noticing).
131
+
> [!NOTE]
132
+
> Please note that you cannot use the ```3.8.*``` wildcard in the ```dotnet-tools.json``` file (tool versions have to be fully qualified). We strongly recommend that the versions match the MonoGame version referenced in your ```.csproj``` (if you are using the ```*``` wildcard, make sure that they do not end up mismatching if the NuGet packages are updated without you noticing).
133
+
134
+
The file is the same regardless of which platform / target you are intending to use. If you have a multi-project solution, you only need a **SINGLE** configuration at the root of the project for all client projects.
91
135
92
-
You will also need to add this to your ```.csproj```:
136
+
## Remove `RestoreDotNetTools` section from csproj
137
+
138
+
From `3.8.4.1` and above, the `RestoreDotNetTools` section is no longer required in client project `csproj` files, as the processing is now handled within the MonoGame deliverables.
139
+
140
+
> [!NOTE]
141
+
> Earlier versions of MonoGame, e.g. 3.8.0 do not have this configuration in the project template, if your `csproj` does not have a `RestoreDotNetTools` element, you can safely ignore this section.
With these changes, .NET will automatically install the MGCB Editor for you when launching Visual Studio 2022 (if you want to install it manually and skip adding the Target, run ```dotnet tool restore``` within the project directory).
150
+
> [!TIP]
151
+
> The XML has changed over versions with various messages and layout, but the section to remove is always titled `Name="RestoreDotNetTools"`
102
152
103
-
Then, if you installed the Visual Studio extension, you should also be able to just double-click an ```.mgcb``` file to open the MGCB Editor. You can also open the MGCB Editor with the CLI via ```dotnet mgcb-editor``` when executed from within the project directory.
153
+
Simply remove this section safely from any and all `csproj` files located in your solution that are dependent on MonoGame.
104
154
105
-
This new configuration has the advantage of allowing to have per-project versions of MGCB and its Editor (instead of per-machine like a global tool).
155
+
## iOS/iPadOS, and Android Considerations
106
156
107
-
## iOS/iPadOS, and Android
157
+
DotNet 9 is MANDATORY for iOS and Android due to platform requirements, as well as the following configurations:
108
158
109
-
.NET 6 introduced breaking changes in how csproj are defined for iOS/iPadOS and Android. We recommand that you create new projects using the 3.8.1 templates and that you copy over your project files there.
159
+
- MonoGame 3.8.4.1 is **REQUIRED** to comply with the Google Policies on 16kb pages and other affordances.
160
+
- The Android `targetSdkVersion` in the `AndroidManifest.xml`**MUST** be a minimum "35" to comply with the latest Google policies. The templates set the minimum to `21` which is safe, only the `TARGET` SDK is critical.
161
+
- iOS **MUST** use a minimum `SupportedOSPlatformVersion` of `12.2` in both the `csproj` and in the `info.plist` configuration for the project.
0 commit comments