You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#交叉引用项目构建问题:游戏双项目的编译启动需求

解决游戏引擎与内容项目的跨IDE自动构建启动问题

解决思路

不用添加会导致循环依赖的项目引用,而是通过MSBuild自定义构建目标,让Engine项目在自身构建前自动触发Content项目的构建,这样不管用Visual Studio还是Rider,点击运行按钮都能完成要求的步骤。

具体操作

直接修改Engine.csproj文件,在原有配置的基础上添加以下MSBuild代码:

<Project Sdk="Microsoft.NET.Sdk">
  <!-- 保留你原本的项目配置 -->

  <Target Name="BuildContentBeforeEngine" BeforeTargets="Build">
    <!-- 替换成你实际的Content项目相对路径 -->
    <MSBuild Projects="..\Content\Content.csproj" 
             Targets="Build" 
             Properties="Configuration=$(Configuration);Platform=$(Platform)" />
  </Target>
</Project>

代码说明

  • BeforeTargets="Build":保证这个自定义目标会在Engine项目开始构建前执行
  • Projects:填写Content.csproj相对于Engine.csproj的路径,根据你的解决方案结构调整就行
  • Properties:同步当前的构建配置(Debug/Release)和平台(x64/x86等),确保两个项目的构建环境一致

可选优化:自动复制Content.dll到Engine输出目录

如果需要让Engine启动时能直接找到最新的Content.dll,可以在同一个Target里加上复制逻辑:

<Target Name="BuildContentBeforeEngine" BeforeTargets="Build">
  <MSBuild Projects="..\Content\Content.csproj" 
           Targets="Build" 
           Properties="Configuration=$(Configuration);Platform=$(Platform)" />
  
  <!-- 把Content.dll复制到Engine的输出文件夹 -->
  <Copy SourceFiles="..\Content\bin\$(Configuration)\$(TargetFramework)\Content.dll"
        DestinationFolder="$(OutputPath)"
        SkipUnchangedFiles="true" />
</Target>

配置完成后,不管用哪个IDE点击运行,都会自动按顺序构建Content、构建Engine、启动Engine.exe,完全不需要IDE专属设置。

内容的提问来源于stack exchange,提问作者David Klostermann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:10:16