kkamegawa's weblog

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

Visual Studio 2017オフラインイメージから古いコンポーネントを削除するツールを公開しました

Visual Studio 2017はオフラインインストール用のイメージ作成ができます。

docs.microsoft.com

Visual Studio 2017もラピッドリリースになったようで、従来のService Packレベルの更新が数か月に一度程度公開されます。この辺は.NET Coreや昨今の流れのはやいオープンソース系のツールについていくには仕方のないことですね。

docs.microsoft.com

ところが困った点として、同じフォルダでオフラインイメージを構築していくと、古いバージョンのコンポーネントもたまっていきます。私の場合は最新版だけあればいいので、こんなツールを作ってみました。

github.com

Visual Studio 2017のオフラインイメージをダウンロードしたフォルダを指定して実行すると、最新のコンポーネントのフォルダを除いて削除します。

.NET Coreの練習用に作ってみました。Releaseは作っていないのですが、Visual Studio用のツールなので、Visual Studioは持っている(もしくは.NET Core SDKだけでビルドできる)ので、まぁいいでしょう。

誰得ツールですが、よかったら使ってみてください。

(追記) --cleanオプションでできたのか…前なかった気がするんだけどなぁ…と思ったら、15.3のインストーラーで追加されたのか。

RedGate ReadyRollで継続的インテグレーションするときの注意点

ReadyRoll Core

Visual Studio 2017 Enterpriseには、RedGate社のReadyRollという、SQL Serverに対して構成の履歴や差分を比較するためのツールが付属しています(Proにはついていません)。フルライセンスはOracleに対応したり、より高度なことができるのですが、Visual Studio 2017にはCoreエディションという機能制限版となっています。

blogs.msdn.microsoft.com

SSDTと何が違うの?ということですが、FAQに載っています。

www.red-gate.com

SSDTはステートベース、ReadyRollはマイグレーションファースト、という説明で方向性が違う…らしいです。まだ私も使いこんでないので、ありがたい状況がよくわかってません。誤解を恐れずに言えば、EntityFrameworkのマイグレーションと同じことができると。単純なシナリオならSSDTでも問題ない、と書いていますね。

Octopus Deployと組み合わせることにより、複数のデータベースへのデプロイ、ロールバックも対応しています。

www.red-gate.com

Proバージョン

Visual Studio 2017に付属しているのはCore Editionなので、機能が結構制限されています。制限されているリスト(上のURLにも載っています)。

  • Work quickly and efficiently with code-based objects e.g. stored procedures (Programmable Objects feature)
  • Offline Schema Model for object-level history
  • Include static data alongside schema changes
  • Customize schema and data comparison options
  • Customize schema comparison filters
  • Generate a diff report of database changes
  • Generate a schema drift report
  • Generate a schema drift correction script
  • Easy deployment of CLR database objects
  • Visual Studio 2012/2013/2015 All Edition Support

VS Enterpriseで試してよさそうなら使ってみてもいいと思います。

継続的インテグレーション時の注意点

Visual Studio単体でビルド&デプロイするときはいいのですが、VSTSやTFSなどで継続的インテグレーションを実行するとエラーになります。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\ReadyRoll\ReadyRoll.Data.Schema.SSDT.targets(145,5): Error : An error occurred while attempting to verify your deployment scripts: A connection was successfully established with the server, but then an error occurred during the login process. (provider: Named Pipes Provider, error: 0 - No process is on the other end of the pipe.)

原因はsqlprojファイルのReadyRollTargetPathがpackagesフォルダを参照していないためです。以下の手順で対処してください。

  1. ReadyRollプロジェクトを右クリックして、「アンロード」を選択。
  2. プロジェクトファイルが「利用不可」になるので、右クリックして、「編集」
  3. ReadyRollTargetsPath というセクションを探して、以下のように編集。

f:id:kkamegawa:20170408165807p:plain

<ReadyRollTargetsPath Condition="Exists('$(MSBuildThisFileDirectory)..\packages')">$([System.IO.Directory]::GetDirectories('$(MSBuildThisFileDirectory)..\packages', 'ReadyRoll.MSBuild.*')[0])\tools\ReadyRoll.Data.Schema.SSDT.targets</ReadyRollTargetsPath>

これで、sqlprojファイルを保存して、プロジェクトを右クリックから「再読み込み」してください。コミットすればVSTS/TFSでビルドできるはずです。これ実はチュートリアルには書いてなくて、ビルドの設定のところに書かれています。

https://documentation.red-gate.com/display/RR1/Build+components

注意点として、ドキュメントにも書かれていますが、ソリューションファイル(sln)が「親フォルダにない場合」このままコピペでは動きません(Visual Studioから普通に作ったら親フォルダにslnがあります)。..\packages のところを適切に変更してください。

Team Foundation Server 2017 Update1 RC2リリース

www.visualstudio.com

ようやくTFS 2017 Update1 RC2がリリースされました。おそらく3/8にVisual Studio 2017と合わせてリリースなんですかね。今回からやっと日本語版が提供されました。サポートも行われるので、プロダクションに入れてもいいようです。

大体2-3くらい前のスプリントの内容がほとんど入ってるようですね。おそらく翻訳されると思いますので、簡単に。

  • ブランチポリシーの強化
  • ディスカッションコントロールツールバー
  • レポジトリ管理者権限の変更
  • Pull Request コメントの強化
  • Pull Request コミットの閲覧
  • Visual Studio 2017のテスト結果サポート
  • リリースマネージメントでのVariable Groupeのサポート
  • プロセステンプレートエディタ告知(Visual Studioアドオン)

  • 個人向けプロジェクトページ

  • バージョン管理の強化
  • ビルドの強化
  • リリースマネージメントのパイプライン並列度に応じた支払い
  • パッケージ管理機能の強化
  • クロスプラットフォーム強化
  • テスト機能の強化
  • リリースマネージメントの強化
  • コード検索機能の強化
  • SonarQubeによるコード品質の強化
  • 管理者機能の強化
  • Team Room廃止予告(次のTFSではなくなります)
  • Markdownファイルへのリンク廃止

2月からconnectでのフィードバックは終了し(Visual Studioは継続されてますが)、Developer Communityというサイトでのフィードバックになるようです。日本語が使えるかどうかはわかりません…。バグとかであれば、簡単な報告でいいようです。

developercommunity.visualstudio.com

ただ、connectとは違って、今のところプライベートモード(MSの人とのみやり取りするモード)はないようです。そういう場合はサポートにお願いということなんでしょうか。

わんくま大阪でGit初級話をしてきました

www.wankuma.com

わんくま大阪にお邪魔して、Gitの初級編をお話してきました。

デモで片方の環境の編集するの忘れてて、競合&マージのデモが失敗したのが心残りでしたが、なんとか大体思っていたデモができてよかったです。個人的にGit for WindowsはVisual Studioでgit addから漏れてしまうソリューションファイル(構成によっては追加されないので…)、fetchしてくれないときのfetchとかに使っています。

次はVisual Studioのローンチイベントやりたいですね…