然而,我在关于Monogame的论坛上发现,在VS Code中(至少在Linux上)可以使用Monogame。
http://community.monogame.net/t/visual-studio-code-and-monogame/2371
请帮我一下。我想知道在Windows上是否真的可以编译和运行monogame应用程序。
http://community.monogame.net/t/visual-studio-code-and-monogame/2371
请帮我一下。我想知道在Windows上是否真的可以编译和运行monogame应用程序。
回答已编辑,因为Monogame发布了官方的dotnet项目模板
我终于让它工作了。
我意识到我所需要的就是创建一个Monogame项目(*.csproj),然后在没有Visual Studio的情况下编译/构建它。VS Code只是一个功能丰富的文本编辑器,我需要其他的工具集。
MSBuild工具用于编译/构建Monogame项目,并可用作CLI。不需要安装Visual Studio即可使用。
对于C#项目构建,需要使用dotnet core。执行脚本即可。
dotnet new [Template]
创建一个新的项目。我们需要在这里添加monogame的模板。dotnet new --install "MonoGame.Templates.CSharp"
使用脚本
dotnet new -h
查看所有可用的模板,请使用以下命令。
现在,要生成项目,请使用以下命令。
dotnet new mgwindows
成功执行后,将生成[FolderName].csproj、Game1.cs、Program.cs和monogame项目的其他文件/文件夹。请注意,这个csproj是基于.NET Framework(版本为4.5,如果我没记错的话...),因此可能无法使用dotnet run命令。(如果你有点固执,你可能需要将安装了Monogame的文件夹(其中包含Monogame.target文件)复制到dotnet安装的文件夹中。)
换句话说,使用msbuild来构建和运行项目。
msbuild
如果程序没有编译时错误,则.exe文件将成功构建,并且您将看到输出文件路径,以便执行它。dotnet new desktopgl
这个程序可以在dotnet core上运行(即您可以使用“dotnet run”命令来执行它)。
C:\Program Files\dotnet\sdk\3.0.100-preview-009812\MonoGame\v3.0\MonoGame.Content.Builder.targets(40,5): error MSB4062: The "MonoGame.Build.Tasks.CollectContentReferences" task could not be loaded from the assembly C:\Program Files\dotnet\sdk\3.0.100-preview-009812\MonoGame\v3.0\MonoGame.Build.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified
。 - Bendotnet
并查看它是否正常工作。
Install MonoGame editor:
dotnet tool install --global dotnet-mgcb-editor
and
mgcb-editor --register
Install MonoGame Templates:
dotnet new --install MonoGame.Templates.CSharp
Create a new project in the chosen template:
dotnet new mgdesktopgl -o ProjectName
Enter in your project with cd ProjectName
and add the MonoGame package to it:
dotnet add package MonoGame.Framework.DesktopGL --version 3.8.0.1641
And finally:
dotnet run Program.cs
你完全可以在Visual Studio Code中使用MonoGame进行编程,没有任何理由不行。虽然你将缺少调试功能,并且设置会比较困难,但如果你能接受这一点,那么就继续吧。
你已经注意到,你可以轻松创建可执行的控制台应用程序。这实际上是你需要做的全部。关键在于,你必须构建目标为.NET4+或Mono的应用程序。如果你按照教程构建了.NET Core应用程序,它们将无法与MonoGame兼容(目前如此)。如果你正在构建.NET Core,请花些时间了解如何使用MSBuild或Mono构建桌面CLR应用程序。如果你需要更多信息,我可以详细介绍。你还需要确保知道如何从控制台应用程序引用其他.NET程序集。在继续之前,请先研究一下如何做到这一点。
对于Windows用户,你可以选择针对DesktopGL(OpenGL)或WindowsDX(DirectX)版本的MonoGame进行开发。我个人比较喜欢DirectX版本。你需要两样东西才能开始工作:1. MonoGame程序集,2. MonoGame管线工具(用于将你的内容编译成.XNB文件,以便导入到游戏中)。
获取MonoGame的程序集和工具,我能想到的最简单的方法是安装Visual Studio Community Edition,然后下载并安装Visual Studio的MonoGame。这将为您带来所有的工具。然后,您需要查看“C:\Program Files (x86)\MonoGame\v3.0\Assemblies”以获取适当的程序集,“C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools”以获取MonoGame Pipeline Tool。nuget.exe install MonoGame.Framework.WindowsDX
或者 nuget.exe install MonoGame.Framework.DesktopGL
。这会创建一个包含lib文件夹的目录,该文件夹中包含你所需的.DLL文件的net40文件夹。对于WindowsDX,我认为你还需要DirectX运行时https://www.microsoft.com/en-us/download/details.aspx?id=34429。对于OpenGL,我认为你需要OpenAL(用于音频)https://www.openal.org/downloads/。
一旦您获得程序集,您需要在构建代码时引用它们。由于您已经熟悉创建和运行控制台应用程序,我假定您知道如何进行此操作。只需引用您从Nuget下载或从安装中提取的每个托管.DLL文件即可。
为了测试,将此内容放入.cs文件中,在构建中引用MonoGame程序集,像构建控制台应用程序一样构建,并执行:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
public class Game1 : Game
{
GraphicsDeviceManager graphics;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
}
[STAThread]
static void Main()
{
using (var game = new Game1())
game.Run();
}
}
你应该会得到一个底色为矢车菊蓝的窗口,如果没有,那么你可能没有正确生成或引用文件,或者你缺少某个依赖项。
现在的问题是如何获取Pipeline工具和MGCB.exe。如果你已经成功安装了MonoGame for Visual Studio,太好了!这些文件位于我上面提到的文件夹中。如果没有,由于某种原因,MonoGame项目不会分发这些工具的单独版本,只能通过安装程序一同安装。我将所需内容的内容放入GitHub上的一个虚拟发布中,你可以从https://github.com/srakowski/derp/releases/tag/MG下载Pipeline.zip文件并解压缩,这样就有了你所需要的东西。
创建一个空白的Content.mgcb文件并使用Pipeline.exe打开它。你应该能够添加和构建内容文件。你需要将这些文件复制到与 .exe 文件相同的目录中。通常情况下,这些文件被放置在一个名为 Content 的文件夹中,并且 Content.RootDirectory = "Content";
被添加到游戏的构造函数中。
一旦您成功完成所有这些工作,您就可以自由地创建您想要的游戏。如果您遇到问题,请告诉我,我们会解决问题。