无法构建Godot mono项目“找不到命名空间名称'Godot'”

问题描述 投票:0回答:1

我正在尝试构建一个 Godot mono 项目,该项目是我刚刚从我的存储库克隆的,可以在我的另一台机器上运行。

当我尝试在 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 中打开新解决方案并尝试构建来复制此内容。

continuous-integration mono godot
1个回答
0
投票

在某些情况下可能会出现此问题:

  • 从项目在其他地方构建的存储库进行克隆,但在这台新机器上却没有
  • 尝试新的 IDE:Visual Studio、Rider、VS Code
  • 新团队成员加入
  • 关于持续集成系统

解决方案位于 KellyThomas 对 Github 问题的回复中这里

godot mono 程序集放置在您项目的 构建过程中的 .mono/assemblies 目录 项目。

场景(播放按钮位于 godot 窗口的左上角)或 单击单声道面板上的构建按钮(与输出、调试器等位于同一堆栈的中心底部)。

  1. 运行您的项目/场景(播放按钮位于左上角) 戈多窗口)或
  2. 单击单声道面板上的构建按钮(与输出、调试器等位于同一堆栈的中心底部)。

因此,项目未构建的原因是您的 IDE 或构建系统没有所需的 dll,当您从那里运行构建时,通常由 Godot 程序本身将其放置在那里。

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

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

我的解决方案是在工作目录之外存储所需 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
© www.soinside.com 2019 - 2024. All rights reserved.