読者です 読者をやめる 読者になる 読者になる

kkamegawa's weblog

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

TFS2015 Update3でSonarQube連携ができない場合の対処

TFS ALM SonarQube VisualStudio

TFSおよび、VSTSでビルド時にSonarQubeを呼び出すことにより、C#コードの静的解析及び、品質情報の管理を行うことができます。

Microsoft Azure - SonarQube と TFS による技術的負債の管理

SonarQube™ » Announcing SonarQube integration with MSBuild and Team Build

最初はうまく動いていたのですが、Update3のころからうまく動かなくなっていました。原因はConnectに報告するときに調べていたのですが、その通りだよということでした。

SonarQube Tasks Failed in non-english OS | Microsoft Connect

例によって、ビルドタスクのエンコーディングがANSIで、- がコードページISO-8859-1の文字だったおかげで、英語OS以外では動かないということです。

Invoke-BatchScript $bootstrapperPath -Arguments $arguments

根本対処はTFS 2015 Update4かTFS15(Preview)になるとのことなので、以下の回避策を使用します。

  • 各エージェントのtasks\SonarQubePreBuild\1.0.35フォルダにあるSonarQubePreBuild.ps1 をUTF-8に変更して、上記のように編集する。
  • クロスプラットフォーム用ビルドエージェントtfs toolを使って、1.0.36のビルドタスクをアップロードする

簡単なのは前者ですね。ビルドタスクにはそもそもこういう英語OS以外ではうまく動かないってのがたまに出てくるので、注意が必要です。

プログラマ的にWindows 10 Anniversary Updateのうれしいところ

.NET Docker Linux PowerShell Windows10

10個あるかな、と思ったのですが、今のところ思いついたものをあげてみました。うーん、まだあるはずなんですが。とりあえず、つらつらと書いてみます。Inkとかは純粋にプログラマ向けとしてどうかなーと思って、あえて入れていません(ぉ)。

他にもお気に入りの機能があれば紹介してください。

Docker互換のコンテナ

言わずと知れたこれですね。Docker for Windowsを使えば現在でも使えます。

docs.docker.com

ただ、こちらはHyper-VでLinux仮想マシン(初期で2GB )が動くので、少しメモリがきつい。なによりもWindowsで動くコンテナであればWindowsネイティブの機能を使うことになります。

msdn.microsoft.com

コマンドはdockerコマンドで共通のようです。PowerShellコマンドレットも用意されるようですが、基本はdockerコマンドで、詳細な情報を見たいときはPowerShellという住み分けになるようです。

MAX_PATHが260バイトの制限から解き放たれる

実は今までもファイル名のprefixに\\?\とつけて、UnicodeでコンパイルしたWin32アプリケーションであれば、64KBまでのパスを使えることができました。しかし、ExplorerがWindows 95時代からのANSIモードで動いていたり、世の中MAX_PATHが260バイトという決め打ちで動いていたり、.NET FrameworkもWindows 95とかを引きずっていた都合上、最大パスは260バイトまで、となっていました。

Anniversary Update以降、グループポリシーでEnable NTFS long pathsを有効に設定すれば、Win32アプリケーションでも有効になります。もちろん、MAX_PATHが260と決め打ちしているような大多数(99.9999%くらい?)のアプリケーションに長いパスを与えると即死、もしくはバッファオーバーフロー起こすので、十分評価してからにしましょう。

betanews.com

Desktop ConverterでWin32/.NETアプリケーションの簡単展開

既存の.NETアプリケーションやWin32アプリケーションにUWPのガワだけかぶせて、ストアでより簡単に配信ができるようになるというDesktop Converterです。間違えないで欲しいのは、あくまでも「ストアに公開できるようになる」というだけで、「UWP化される(mobileやXBoxで動くようになる)わけではありません

ただし、何でもかんでもコンバートできるわけではなく、制限があります。特にVisual C++ランタイムと.NET Frameworkが限られるので、古いVCランタイムを使っているアプリケーションの場合、一度移行してから、ということもあるので、注意してください。

Convert your desktop application to a Universal Windows Platform (UWP) app

UACで特権昇格が必要なアプリや、他のアプリと連携する(AppDataに書き込む)ようなアプリがダメ、というのはややきついものの、大多数のアプリケーションでは問題無いでしょう。ただし、その前にインストーラーでインストールされるようなアプリケーションでなくてはなりませんが。

インストーラーがないようなアプリの場合、コンテナ使うしかないですかね。

ネットワークが高速化

ネットワークは門外漢ですが、Linuxなどではすでに対応している新しいRFCもしくはドラフトの規格に対応しているそうです。TFOとかは素人目に見ても頻繁にopen/closeするようなサーバにアクセスする場合の高速化が見込まれると思われます。

blogs.technet.microsoft.com

PowerShell (WMF 5.1)

WMF 5.1 リリース ノート (プレビュー)

Bashに持って行かれた感がありますが、Windows における自動化、スクリプトでの運用管理を行いたい場合はWMF(PowerShell)なのは変わりません。いろいろ聞かれましたが、Bashは(今のところ)Windows 10を開発者モードに変更しないと使用できません。つまり、Bashは管理者がシステム管理のために使うのではなく、あくまでも開発者向けのツールセットの一部となっています。

PowerShellはWindowsクライアントおよびサーバの管理、自動化のためのものです。

PowerShell 5.0 にあったバグや、高速化、PowerShell DSCをはじめとした機能強化が盛りだくさんです。

.NET Framework 4.6.2

先ほどWin32アプリケーション向けの長いファイル名を扱うようにする設定を紹介しましたが、.NETの場合はapplication manifestに指定することにより、プロセス単位で制御することが可能です。

<?xml version="1.0" encoding="utf-8" ?>  
 <configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
  </runtime>
</configuration>

.NET Coreおよび、.NET Framework 4.6.2がインストールされたWindows 10 Anniversary Update(1607)で有効だそうです。

blogs.msdn.microsoft.com

長いファイル名の他にもモニタごとのDPIを認識するようになったとか、新しい暗号化に対応したとか、着実な強化が行われています。

blogs.msdn.microsoft.com

Bash on Ubuntu on WindowsでツールセットがLinux共通に

//Build 2016での話題は間違いなくこれだったでしょうね。cygwinとかもまぁいいのですが、なんとなくもどかしさを感じていました。PowerShellのすべてがオブジェクトになるというのは.NETなどの相互運用で大変便利です。

しかし、他のプラットフォームの方に使ってもらおうとする場合、そのへんが足かせにもなっていました。移行のためにコマンドレットにエイリアスを登録されているものもある(lsやwgetとか)のですが、結局オプションが違うから使わないんですよね。

あと、長いファイル名の扱いも、UnicodeアプリであったとしてもWindowsだから260バイト固定とかになっているものも少なからずあり、困っていました。node.jsもしばらく困ったなぁ…。

しかしそんな時代もさようなら。パスさえ少し考慮すればUbuntuで動いているものがまぁ大体動くようです。もちろんまだ実装されていないシステムコールや実装されないであろうシステムコールもありますが、コマンドラインの開発用ツールセットは割りと動くようですね。

blogs.msdn.microsoft.com

詳細な仕組みなどは上記のブログで。もしも困る場合はGitHubにissueをたててみればいいようです。

github.com

UWPアプリのバックグラウンド実行サポート

通知ではなく、バックグラウンドで実行したいような場合よさそう?

blogs.windows.com

Visual Studio Team Services 2016/7/7の更新

VSO VSTS

なんかブログとかで告知されていないようですが、すでに2016/7/7のVSTSのリリースノートが出ているようなので、翻訳を行いました。オリジナルはこちらです。

2016-Jul-7 Release Notes | Visual Studio Team Services

一週間くらいかけて展開していくそうですが、私が使っているテナントにはすでにきているようで、あれ?こんな挙動だっけ?というところがいくつもありましたが、リリースノート見て納得でした。

Webテストランナーは大きく変わっているようで、Chromeでの実行にとても力を入れているようですね。Edgeもそのうちうまくいくんでしょうけど。将来の計画として、MTM 2016(Test Manager 2016)では大きな機能強化が予定されているようですね。2010以降ほとんど変わらなかったTest Managerが大きく変わりそうです。

ブラウザアドオンがIE11で終わることですし、モダンなWebブラウザの外部制御に準拠するんでしょうか。

でもリリースノートに書いていないことを追加したとか言ってるぞ…

blogs.msdn.microsoft.com

blogs.msdn.microsoft.com

translate to Japanese toVSTS release notes from ht ...

Visual Studio 2015 Update3適用後に拡張機能でエラーになった場合の対処(更新:パッチリリース)

VisualStudio

Visual Studio 2015 Update3適用後にこんな現象が出ることがあります。

これはソリューションエクスプローラーですが、私はチームエクスプローラーで起きました。

f:id:kkamegawa:20160710133650p:plain

拡張機能のパッケージ読み込みに失敗したといわれます。原因はどちらも同じで、コンポーネント関係のキャッシュが壊れてしまうことです。一番よく出るのはUpdate 3適用直後です。私も一つの環境で起きて困りました。VSをアンインストールしても変わりません。

対処方法としては、Visual Studioを一度終了させて、%localappdata%\Microsoft\VisualStudio\14.0\ComponentModelCache フォルダをさっくり消してください。このフォルダはVisual Studioが自動生成するので消しても問題ありません。

一応報告はしています(あれ…出てこない…)。

(7/22追記)
7/20に公開された14.0.25424.00(KB3165756)でこの問題に対処したようですね。

Update for Microsoft Visual Studio 2015 Update 3 (KB3165756)

Issue 5
After you install Windows updates, you may see various package load failures when you start Visual Studio. Although this update fixes this issue, you can also delete the ComponentModelCache folder as a workaround.

他にもMSDNフォーラムで見かけたCMFCToolBarButtonのバグとかも直っているようです。

TFS "15" Preview公開

TFS Git TFVC Java

Team Foundation Server "15" Preview | Visual Studio

Visual Studio "15"に対応するTFS "15"のプレビューが公開されました。ざっくりリリースノートを見る限りではVSTSの前回くらいまでの更新がほとんど入っている感じですね。日本語翻訳もされるでしょうからここでは特に翻訳しませんが。今回特にローカルでNuGetサーバーが使えるようになったのはうれしいですね。

今までも独自に立てることはできまたけど、統合されていると便利ですし、チームメンバーのみという認証もかかりますしね。

今回コード検索が入っていますが、Elastic Searchのようです。なので、JRE8 Update20以降が必須になっています。

あとはビルドやテストの状態追跡もすごくよくなっているようですね。微妙な日本語があったらまたチェックするかな…。既知の問題もあるし、まだGo-Liveではないようなので、本番用途には入れないようにしましょう。

(追記)
まだ日本語パックはないようなので、英語OS,英語SQL Serverに入れる必要があるようです。動作環境も公開されています。もう延長サポートフェーズのWindows Server 2008 R2/Windows 7世代に対応するとは思わなかった。

SQL Server 2014 SP2が最低要件となっています。もうすぐ出るんでしょうか。
www.visualstudio.com

Microsoft MVPを再受賞しました

MVP

f:id:kkamegawa:20160702054351p:plain

さらにOne More Year!(もうオバマが終わるからこのフレーズ考えないと)

ということで、おかげさまをもちまして、7/1(US時間)でMicrosoft MVP for Visual Studio and Development Technologiesを再受賞いたしました。通算だと6回目になります。

最近、DevOpsだということでデプロイ、ビルドの話とか多いようですが、個人的にはデバッグとかチューニングの話も好きなので、そっちもやっていこうと思います。今後もTFS/VSTSの改良はどんどん続くので、紹介も続けますよー。

執筆やらお話とかご用命があれば都合がつく限りお引き受けいたします。

Team Foundation Server 2015 Update3リリース

ALM ReleaseManagement TFS VisualStudio

.NET Core 1.0 RTM / Visual Studio 2015 Update&nbsp;3buchizo.wordpress.com

ブチザッキに任せておけばいいかなーという気がしないでもないですが、一応。TFSこと、Team Foundation Serverも2015 Update3がリリースされました。ついこの前Update 2.1が出たばかりというのに早いですね。リリースノートはこちら参照。TFSはいつもならリリースノートが翻訳されるはずなので、私はやりません(バグの翻訳がめんどく…いや、なんでもない)。

Team Foundation Server 2015 Update 3 | Visual Studio

大きいところではSSHがオンプレミスでもサポートされました。インストール時にチェック入れるとSSHサービスがTFSで動きます。

f:id:kkamegawa:20160628061100p:plain

最初のアップグレードウィザードでSSHにチェックを入れるだけです。

f:id:kkamegawa:20160628061125p:plain

プロフィールページに鍵を登録できます。

f:id:kkamegawa:20160628061126p:plain

TFS管理コンソールではちゃんとSSH有効だよと言われているのですが、SSHの設定を変更するダイアログを出すとなぜか無効です。しかし、teamfoundationsshserviceというサービスが動いていればちゃんと動いているので気にしないでおきましょう。

sc query teamfoundationsshservice

SERVICE_NAME: teamfoundationsshservice
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

他にもSCVMM以外にもVMWareやAzure DevTest LabsのAzure仮想マシンの管理をサポートするようになりました(要拡張機能)。

marketplace.visualstudio.com

marketplace.visualstudio.com

marketplace.visualstudio.com

Update 2.1からであれば、数分くらいで更新終わるはずです(Core i5マシンの場合)。