kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure DevOps 2026/1/28の更新

Azure DevOps Sprint 268のリリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

learn.microsoft.com

CodeQLの既定のセットアップがプライベートプレビューになりました。GitHubではorganizationの設定でできることと同じになるのでしょうかね。興味のある人はformから連絡をどうぞ。

CodeQLのautobuildタスクはなかなかつらかったですが、非推奨になりました。ビルドレスになっていくようですね。2026/3/1に削除されるそうなので急いで移行しましょう。

シークレット検証のフックイベントは便利そうですね。発見されたらTeamsに通知とかSIEMに通知とかできたら便利そうです。

ようやく、Advanced Secuirtyのアラートに作業項目をリンクできるようになりました。これはGitHub Advanced Security for Azure Devopsが公開された時からリクエストしていたので、やっとです。APIでできるようになるのはCIで検出された時でもできるということですね。

先日Blogでも紹介されたCoding Agent呼び出しがGAになりました。はやい。毎回便利に使ってます。この翻訳もCoding Agentでやってもらっていますが…便利ですよね。

TFVCの古いチェックインポリシーの移行を忘れないようにしましょう。

pull requestの通知が改善されてノイズ減るのはいいですね。メールだけなんかな…そうみたいですね。

pull requestテンプレートって…あったんだ(気づいてなかった)。便利なのでぜひ使いましょう。階層の優先順位はあるけど、ブランチ単位までにするのがいいでしょうね。

新しいTest Run Hubが一般提供開始されます。非常に多くの機能が追加されました。Test Hubはほかのサービスにない機能なので、試してください(有料ですが…)。

2026年もまだ改良が続くようですね。ではまた三週間後。

translate to Japanese to Azure DevOps release not…

ASUS RT-BE3600 Go使ってみた

GREEN FOUNDINGでRT-BE3600 Goが先行販売されていたので買ってしまいました。今NECのポケットルーターを使っていますが、やはりホテルだとキャプティブWiFiを各端末で認証しないといけないとか、無限に接続先が増えていくのが嫌だ、というのが主な理由です。

いいところ

競合はいろいろありますが、だいたいいいサイズで、大きいバッグとかバックパックもっているなら大丈夫。WiFi 7対応もいいですね。各種セキュリティもそろっています。

トレンドマイクロさんのAiProtectionも無料で使えますが、無料ということは…情報提供とかの必要がありますので、そこはご注意を。

なので機能は充実していると思います。

いまいちなところ

電源アダプターがね…でかいんですよ。あと、USB-C給電ではあるのですが、電池はもちろん内蔵していないので、USB-PDの充電器だとほかのケーブルをつなぐと切れます(仕様上そうなるらしい)。なので、大きめのモバイルバッテリーか、ACかとなります。ACアダプターは今時ソケットの折り畳みすらできないので、たぶん1口のUSB-PD充電器か何かを買ったほうがいいんでしょうね…(普段2個持って出かけるので3個目…)。

iPhone/Android用の管理アプリがあるので、最初それでセットアップできるのかと思ったら全くできない。接続がタイムアウトしてしまうのはなんでやと思ったら、有線でつながないとセットアップできないものでした。

最初に使用許諾とかの画面があって、それ同意しないと接続拒否されます。一度だったらそれでもいいんですが、セットアップ後、ファームウェアを更新したらまたつながらない。そう、ファーム更新後も使用許諾画面が出てしまうのでした。これ出先で有線LANをもつノート持ってなかったら詰むんじゃなかろうか。

WiFIのAP名がいまいちダサい(なんかすぐかぶりそう)な名前だったので、変更したんですよ。ファーム更新したんですよ…初期化されて工場出荷時の設定に戻りました。なんだこりゃ。パスワードとかいろいろ変えろという警告は出るんですが、こんなのファーム更新で初期化されたらパスワードとかも初期化されそうで怖い。思わず「なんとかしてくれ」と報告しましたが、何とかなるかはわかりません。

まぁかったからには使うつもりですが、正直デメリットなかなか大きいです…。

.NET 10 + VS Code で dotnet workload repairが失敗する現象を直した(Copilotが)

少し前からmacOS 26.2+.NET 10の環境でdotnet workloadコマンドが動かなくて困っていました。repairコマンドを実行してもダメ。さすがに困ってきたので、直してもらった記録。

3行まとめ

  • sdk-manifests / metadata/workloads / packs をリセットして再構築した
  • VS Code(C# Dev Kit)は dotnet を自前で管理している(既定の動作)ので、 .NET Install Tool の existingDotnetPath で dotnet を固定
  • Prune data エラー直すために SDK の再インストール

前提として私はHomebrewで.NET SDKをインストールしています。

現象

Workload が壊れて dotnet restore 以前にエラーが出ていました。

dotnet workload list
# -> Unhandled exception:
# Workload manifest microsoft.net.workload.emscripten.current ...
# was not installed.

dotnet workload repair を実行しても同じメッセージが出て直らない、という状態です。

いろいろ削除

# Workload の manifests を削除
sudo rm -rf /usr/local/share/dotnet/sdk-manifests

# Workload の状態(メタデータ)を削除
sudo rm -rf /usr/local/share/dotnet/metadata/workloads

# 展開済み pack を削除(確実に掃除)
sudo rm -rf /usr/local/share/dotnet/packs

# ユーザー側にもあれば削除(無くてもOK)
rm -rf ~/.dotnet/metadata/workloads 2>/dev/null || true
rm -rf ~/.dotnet/sdk-manifests 2>/dev/null || true

workloadが格納されているフォルダーをきれいさっぱり削除してから再構築。

sudo dotnet workload clean
sudo dotnet workload update --from-previous-sdk
sudo dotnet workload repair

これで`dotnet workload```コマンドがエラーにならなくなりました。次はVS Codeです。

VS Codeの.NET Tool Install拡張機能がエラーになる

VS Codeで.NETのプロジェクトを開くとこんな意味のエラーが出ます。

  • Microsoft.NET.SDK.WorkloadAutoImportPropsLocator を解決できない
  • 古い Workload version を参照して emscripten.current が無いと言う
[error] プロジェクト '/Users/(略)/tests/Tests.csproj' を読み込めませんでした。
One or more errors occurred. (SDK リゾルバー エラー:
"SDK "Microsoft.NET.SDK.WorkloadAutoImportPropsLocator" を解決しようとしているときに、SDK リゾルバー "Microsoft.DotNet.MSBuildWorkloadSdkResolver" に失敗しました。
例外: "System.IO.FileNotFoundException: ワークロード バージョン 10.0.100.1 のワークロード マニフェスト microsoft.net.workload.emscripten.current: 10.0.100/10.0.100 がインストールされませんでした。
"dotnet workload repair" を実行すると、これを解決できる場合があります。

VS Code(Insiders)の Settings (JSON) を開いて、以下を追加します。

{
  "dotnetAcquisitionExtension.existingDotnetPath": [
    { "extensionId": "ms-dotnettools.csharp", "path": "<DOTNET_ROOT>/dotnet" },
    { "extensionId": "ms-dotnettools.csdevkit", "path": "<DOTNET_ROOT>/dotnet" },
    { "extensionId": "ms-dotnettools.vscode-dotnet-runtime", "path": "<DOTNET_ROOT>/dotnet" }
  ],
  "dotnet.autoSdkDownload": false
}

<DOTNET_ROOT>にはdotnetコマンドのフォルダーを指定してください。設定後、VS Codeを再起動すれば読み込めるはずです。キャッシュが残っている場合は消しておくとより安全です。

rm -rf "$HOME/Library/Application Support/Code - Insiders/User/globalStorage/ms-dotnettools.vscode-dotnet-runtime"
rm -rf "$HOME/Library/Application Support/Code - Insiders/User/globalStorage/ms-dotnettools.csdevkit"
rm -rf "$HOME/Library/Application Support/Code - Insiders/User/globalStorage/ms-dotnettools.csharp"

prune package dataが見つからない問題を直す

(<REPO>/<PROJECT>.csproj): パッケージの排除データが見つかりません。.NETCoreApp 10.0 Microsoft.NETCore.App
(<REPO>/<PROJECT>.csproj): パッケージの排除データが見つかりません。.NETCoreApp 10.0 Microsoft.AspNetCore.App
このエラーを無視するには、AllowMissingPrunePackageData を true に設定してください。

参照パッケージが正しく入っていないときにこのエラーになるそうです。

面倒なので、homebrewのパッケージを再インストールしました。

brew reinstall --cask dotnet-sdk

おわりに

昔はこういうトラブル起きると、エラーログ使っていろんなサイト検索して一つずつ解決していましたが、生成AIのおかげで一発でまとめてくれて助かりますね…。

何回実行しても特定の時間まで実行しないアプリランチャー

ほとんど毎日の作業としてこんなものがあります。

  1. Windows Terminalを起動する(スタートアップ起動)
  2. winget実行してアプリケーションを最新にする
  3. npm installを(同上)
  4. dotnet global packageを(同上)
  5. PowerShellのパッケージを(同上) ....

シェルのヒストリーがあるとはいえ、まぁまぁめんどくさい。バッチにして、Terminalのタブ起動時に実行してもいいけど、空振りすることがわかっているのに実行されるのもちょっと嫌だなぁ、と思っていたらはせがわようすけさんがこんなことを書かれていました。

そうだよなぁ、まさにそうと思って簡単なツール作ってみるか?とGitHubにレポジトリ作ったのがこの後すぐ…だけど、めんどくさくなってきて(笑。ほかにもやることあったし)、長い間放置していました。

当時からRustもあり、勉強がてらいいかな?と思ったけど、C/C++のほうがわかるし別に起動してすぐ終わるツールだからC++でいっかと思ってつくりはじめたものの、時間とられすぎて放置していたのです。でもやっぱり面倒になったところに出てきたのがGitHub Copilot(とエージェント)。コード補完やAskしかなかった頃は「違うそうじゃない」と思って、やはりあきらめたのです。

しかし、GPT-5以降のモデルの利用やAgentモードになって自分が作るよりも立派なものをより早くできるようになったので冬休み頑張って仕上げました(Copilotが)。Coding Agentは今のところUbuntuで動いていたので、WindowsのC++は駄目だろう?と思っていたのですがビルドは当然してくれないものの、コンパイルエラーにならない程度のものを作ってくれてびっくりでした。

あとはローカルのVisual Studioで仕上げます。最初「GoogleTestとcmakeがデファクトだよ」と言われて(Ubuntuで動いていたのもあったのでしょうが)、そのまま承諾していたらローカルでGoogleTestがさっぱり動かない。DLLがないっぽいのですが、ちょっとわからなかったし動かせる自信もモチベーションもなかったので、MicrosoftのC++ Testing Frameworkに変えて、cmakeもやめました(のでコミット記録が結構残っています)。この辺の変更もAgentにやってもらいました。

この辺は最初にちゃんとカスタムイントラクション作らなかったのがいけなかったかな、と反省しています。

あと、レポジトリのルートにあるreadme.mdをVisual Studioが認識しない?っぽいのでそこも結構困る。いぜんかずきさんが似たこと(.NETのプロジェクト)で困られていて、「GitHubにあるものであれば大丈夫そうだ」と書かれていましたが、C++のプロジェクトでは認識していないようにも見えます。この辺は要調査。

とまぁ長々と書きましたが、Copilotのおかげで割と自分が納得いくツールになったと思うので良ければ使ってください。wingetへの登録も後ほど…。Visual Studio 2026使っているのにツールセットが2022なのはGitHub Actionsのhosted runnerにVisual Studio 2026が入っていないからです。

github.com

最初はNTFS代替ストリームに最終実行時間を書こうかなとか思っていましたが、起動パラメータとかjsonにするんだからjsonでもいいかと思いなおしました。200KB程度の小さいバイナリーにしましたが、できれば100KB程度にしたかった。