无法构建 Godot 单声道项目 "namespace name 'Godot' could not be found"

Can't build Godot mono project "namespace name 'Godot' could not be found"

我正在尝试构建一个 Godot 单声道项目,我刚刚从我的存储库中克隆了它,它可以在我的其他机器上运行。

当我尝试在 Visual Studio 中构建时,出现错误

 error CS0246: The type or namespace name 'Godot' could not be found (are you missing a using directive or an assembly reference?)

我可以通过在 Godot 中创建一个基本的空场景项目并在 Visual Studio 中打开新解决方案并尝试构建来复制它。

有几种情况会出现此问题:

  • 从项目在别处构建但在这台新机器上没有的 repo 克隆
  • 尝试新的 IDE:Visual Studio,Rider,VS Code
  • 新队员加入
  • 关于持续集成系统

解决方案在 KellyThomas 对 Github 问题 here

的回复中

The godot mono assemblies are placed in your project's .mono/assemblies directory during the process of building your project.

scene (play buttons are in top left corner of the godot window) or clicking the build button on the mono panel (center-bottom in the same stack as output, debugger etc).

  1. running your project / scene (play buttons are in top left corner of the godot window) or
  2. clicking the build button on the mono panel (center-bottom in the same stack as output, debugger etc).

因此,项目未构建的原因是您的 IDE 或构建系统没有所需的 dll,当您 运行 a从那里开始建造。

对于本地开发机器,解决方案是在 Godot 中构建或 运行 项目一次,它将 dll 放置在正确的文件夹中,它将继续允许其他应用程序创建构建,即 Visual Studio 或 Rider(如果您使用 Godot 的 Rider 插件,我相信它会为您创建 dll)。

在 CI 上,方法有点不同,因为我们每次都从头开始,我们不一定要 运行 Godot Build 可以使用类似 MSBuild 的东西。

我的解决方案是在工作目录外存储所需 DLL 的副本,并在 MSBuild 步骤 运行.

之前将其复制到构建文件夹中

在撰写本文时构建 Godot 3.4.4 Mono 项目所需的 DLL 是 GodotSharp.dll。我怀疑你每次升级 Godot 时都必须复制这个 DLL 的新版本。

手动一次性构建 Godot 项目以生成 DLL(基本的 hello world 就可以了)。在 Godot 应用程序中构建项目后,DLL 存储在项目解决方案文件 (.sln) 旁边的文件夹中。该文件夹取决于您的构建配置。

.mono/assemblies/Debug
.mono/assemblies/Release

在 OSX 中隐藏了 .mono 文件夹,按 cmd + shift + . 可在查找器中查看该文件夹。

这就是我如何使用 yaml 管道将文件复制到 Azure Devops 上的正确文件夹。

- task: CopyFiles@2
      inputs:
        SourceFolder: $(Agent.BuildDirectory)/GodotDlls/3.4.3
        Contents: '**'
        TargetFolder: $(binariesPath)/.mono/assemblies/Release