我正在尝试构建一个 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 中打开新解决方案并尝试构建来复制此内容。
在某些情况下可能会出现此问题:
解决方案位于 KellyThomas 对 Github 问题的回复中这里
godot mono 程序集放置在您项目的 构建过程中的 .mono/assemblies 目录 项目。
场景(播放按钮位于 godot 窗口的左上角)或 单击单声道面板上的构建按钮(与输出、调试器等位于同一堆栈的中心底部)。
- 运行您的项目/场景(播放按钮位于左上角) 戈多窗口)或
- 单击单声道面板上的构建按钮(与输出、调试器等位于同一堆栈的中心底部)。
因此,项目未构建的原因是您的 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