添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

After updating Visual Studio today, my Unreal project no longer builds. I am getting compile errors in the Automation Tool and Build Graph.

I created a new project just to test. I followed these steps:

  • Update to the latest version of Visual Studio 2022 (17.8.0)
  • Create a new Blank C++ Game with Unreal 5.3.2
  • Build the solution in Visual Studio.
  • I get this result:
    ========== Build: 46 succeeded, 2 failed, 0 up-to-date, 1 skipped ==========
    ========== Build completed at 10:25 and took 17.625 seconds ==========

    The errors are:
    5>------ Build started: Project: AutomationScripts.Automation, Configuration: Development Any CPU ------
    2>Using bundled DotNet SDK version: 6.0.302
    2>Running UnrealBuildTool: dotnet “…..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll” MyProjectEditor Win64 Development -Project=“C:\Brynn\Test\MyProject\MyProject.uproject” -WaitMutex -FromMsBuild
    3>C:\Program Files\Epic Games\UE_5.3\Engine\Source\Programs\AutomationTool\BuildGraph\BgScriptReader.cs(1640,37,1640,42): error CS8604: Possible null reference argument for parameter ‘other’ in ‘void HashSet.UnionWith(IEnumerable other)’.
    3>Done building project “BuildGraph.Automation.csproj” – FAILED.
    2>Log file: C:\Users\brynn\AppData\Local\UnrealBuildTool\Log.txt
    5>C:\Program Files\Epic Games\UE_5.3\Engine\Source\Programs\AutomationTool\Scripts\CheckForHacks.cs(87,26,87,45): error CA2017: Number of parameters supplied in the logging message template do not match the number of named placeholders ( CA2017: Parameter count mismatch (code analysis) - .NET | Microsoft Learn )
    5>Done building project “AutomationScripts.Automation.csproj” – FAILED.

    For the BgScriptReader.cs error, it is complaining about a possible null value. I added a null check here.

    For CheckForHacks.cs it is complaining about passing format args into a string which has no format specifiers in it. I’ve removed the args to fix this.

    I’ve edited the scripts locally to fix the errors, which works to fix the build. But this will be an issue for everyone on the team as we aren’t building from source, so those changes I’ve made will not be committed anywhere.

    Anyone know why updating VS caused this? My current suspicion is that these are both things that used to be warnings but MS have upgraded to errors, causing the build to fail…

    I was about to post a new topic here but you nailed exactly the issue im having. I converted my project from 5.1.0 to 5.3.2 and its failing to build my project with similar errors. Does anybody know what im missing here? Is the automation tool supposed to be ‘built’ as well?

    5>D:\UnrealEngine-5.3.2-release\Engine\Source\Programs\AutomationTool\BuildGraph\BgScriptReader.cs(1640,37,1640,42): error CS8604: Possible null reference argument for parameter ‘other’ in ‘void HashSet.UnionWith(IEnumerable other)’.
    5>Done building project “BuildGraph.Automation.csproj” – FAILED.
    8>------ Build started: Project: Win.Automation, Configuration: Development Any CPU ------
    6>D:\UnrealEngine-5.3.2-release\Engine\Source\Programs\AutomationTool\Scripts\CheckForHacks.cs(87,26,87,45): error CA2017: Number of parameters supplied in the logging message template do not match the number of named placeholders ( CA2017: Parameter count mismatch (code analysis) - .NET | Microsoft Learn )
    6>Done building project “AutomationScripts.Automation.csproj” – FAILED.
    9>------ Build started: Project: Android.Automation, Configuration: Development Any CPU ------
    8>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\BuildGraph\ref\BuildGraph.Automation.dll’ could not be found
    8>Done building project “Win.Automation.csproj” – FAILED.
    10>------ Build started: Project: CookedEditor.Automation, Configuration: Development Any CPU ------
    2>UE5Rules → D:\UnrealEngine-5.3.2-release\Engine\Intermediate\Build\BuildRulesProjects\UE5Rules\bin\Development\UE5Rules.dll
    2>Done building project “UE5Rules.csproj”.
    11>------ Build started: Project: UE5ProgramRules, Configuration: Development Any CPU ------
    9>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\ref\AutomationScripts.Automation.dll’ could not be found
    9>Done building project “Android.Automation.csproj” – FAILED.
    12>------ Build started: Project: Gauntlet.Automation, Configuration: Development Any CPU ------
    12>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Platforms\Android\ref\Android.Automation.dll’ could not be found
    12>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\ref\AutomationScripts.Automation.dll’ could not be found
    12>Done building project “Gauntlet.Automation.csproj” – FAILED.
    10>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\ref\AutomationScripts.Automation.dll’ could not be found
    10>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Platforms\Windows\ref\Win.Automation.dll’ could not be found
    10>Done building project “CookedEditor.Automation.csproj” – FAILED.
    13>------ Build started: Project: Turnkey.Automation, Configuration: Development Any CPU ------
    14>------ Build started: Project: LowLevelTests.Automation, Configuration: Development Any CPU ------
    14>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Scripts\ref\AutomationScripts.Automation.dll’ could not be found
    14>CSC : error CS0006: Metadata file ‘D:\UnrealEngine-5.3.2-release\Engine\Binaries\DotNET\AutomationTool\AutomationScripts\Gauntlet\ref\Gauntlet.Automation.dll’ could not be found
    14>Done building project “LowLevelTests.Automation.csproj” – FAILED.

    I’m running into the same issue since updating yesterday. Not doing any package yet, just doing Build > Build Solution .

    Fortunately, Ctrl F5 build at least works - and I did changes to my code that get compiled and work.

    BTW - since this VS2022 update, there’s that new dialog:

    Need to have a closer look at that as well. It produces some warnings, but also seems to require some installation and editorconfig stuff.

    I’ve changed the codes to solve this. I don’t know if it’s a good idea but compiled successfully.

    To fix that error needs to edit file Engine/Source/Programs/AutomationTool/Scripts/CheckForHacks.cs line 87 to:

    Logger.LogInformation("Scanning files... [{Arg0}]", FilesToCheck.Count);

    https://github.com/EpicGames/UnrealEngine/pull/11110

    This is not enough. Also need to fix line 1640 at C:\Program Files\Epic Games\UE_5.3\Engine\Source\Programs\AutomationTool\BuildGraph\BgScriptReader.cs:

      if (users != null)
      	report.NotifyUsers.UnionWith(users);
                  

    Is this normal? I’m new to UE and only a hobbyist game dev. But working as a backend dev that would be unacceptable. Even in most open source frameworks not even talking about paid stuff.

  • There is no statement from Epic regarding this issue.
  • There is an open PR for over a week now and no Hotfix.
  • I was aware that game dev tooling feels ancient for other developers but this is just different.

    thanks, applying these 2 code fixes worked for me:
    https://github.com/EpicGames/UnrealEngine/pull/11110/files

    I can’t believe I had to change the source code though


    Here is the fix for people who can’t open the github commits:
    2 files to fix BgScriptReader.cs & CheckForHacks.cs

    Engine/Source/Programs/AutomationTool/BuildGraph/BgScriptReader.cs
    line 1640, replace

    report.NotifyUsers.UnionWith(users);
    
    if (users != null)
    report.NotifyUsers.UnionWith(users);
    

    Engine/Source/Programs/AutomationTool/Scripts/CheckForHacks.cs
    line 87, replace

    Logger.LogInformation("Scanning files...", FilesToCheck.Count);
    
    Logger.LogInformation("Scanning files... [{Arg0}]", FilesToCheck.Count);
    

    hope that helps!