以下の内容はhttps://rksoftware.hatenablog.com/entry/2025/03/09/230000より取得しました。


Pleasanter のビルドでエラーになる

リビルド時にこのようなエラーが出ることがあります。

System.InvalidOperationException: No file exists for the asset at either location 'wwwroot\bundles\generals.js' or 'wwwroot\bundles\generals.js'.
   場所 Microsoft.AspNetCore.StaticWebAssets.Tasks.StaticWebAsset.ComputeFingerprintAndIntegrity(String identity, String originalItemSpec)
   場所 Microsoft.AspNetCore.StaticWebAssets.Tasks.DefineStaticWebAssets.Execute()

■ 普通は出ない

リポジトリからクローンしてきてリビルドしてもエラーは起きません。
ではいつ起きるか。global.json を消したときです。中身は

{
    "sdk": {
        "version": "8.0.404",
        "rollForward": "latestPatch"
    }
}

■ なぜ消したか

これは .NET 8 を強制するもので、.NET 8 のインストールされていない環境でビルドできなかったからです。
今手元のマシンが .NET 9 と 10 しか入っていなくて面倒だなと思って。
※ global.json を消せばより上位の .NET 9 や 10 でビルドができるようになります。

■ 発生タイミング

クリーンではエラーは起きません。
ビルドではエラーは起きません。
Visual Studio でのリビルドでエラーになります。

■ おそらく

BundlerMinifier が Minifier するとき少し時間がかかって、どうにかなってエラーになるのでしょう。

■ 結論

クリーン後にスリープを入れたらエラーは出なくなりました。 .csproj に書き加え

  <Target Name="AfterCleanSleep" AfterTargets="Clean">
    <Exec Command="powershell -Command &quot;Start-Sleep -Seconds 5&quot;" Condition="'$(OS)'=='Windows_NT'"/>
  </Target>

入れる場所が明確になるように、ファイルの最後まで書くと

  <Target Name="AfterCleanSleep" AfterTargets="Clean">
    <Exec Command="powershell -Command &quot;Start-Sleep -Seconds 5&quot;" Condition="'$(OS)'=='Windows_NT'"/>
 </Target>

</Project>

ちなみに、Pleasanter は 2 スペースインデントなので注意してください。うっかり ctrl+k, ctrl+d など押すと全行差分になります。

■ ちなみに

5 秒でなく 4 秒でもうまくいきましたが、環境差を考えて 1 秒長く書きました。
Linux でどうなるか試していないので Windows だけで Sleep するようにしてみました。
PowerShell で Sleep しています。DOS コマンド書いてもうまくいかなかったので。
ビルド前でなく、クリーン後のタイミングにしたのは、クリーンの方が行う回数が少ないと思ったからです。ビルドは結構頻繁にすると思うので。

■ コード

コードはこちら

github.com




以上の内容はhttps://rksoftware.hatenablog.com/entry/2025/03/09/230000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14