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

銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

C#

VisualStudio 2017 RC3 から .NET Core on RHEL にリモートデバッグする

VisualStudio 2017 RC3からリモートデバッグのプロトコルにSSHが選択できるようになり、Linux上の.NET Coreプロセスにアタッチすることができるようになりました*1。 blogs.msdn.microsoft.com これは、以前ブログに書いたdocker上の.NET Coreプロセスをリモ…

Linux でも C# 7 を使いたい

C# Advent Calendar 10日目の記事です。 qiita.com C# 7のリリースが近づいてきている(はず)のですが、専らC# 7の記事はVisual Studioで試しましたというのが多く、.NET Core on Linuxでは試せないのか?という疑問がありました。現時点では、.NET Core 1.0 …

Linux の dotnet restore は大文字HTTP_PROXYを認識しない、あるいは curlコマンドは大文字HTTP_PROXYを認識しない件

微妙にハマったので、書いておきます。.NET Core CLI のdotnet restoreコマンドをプロキシ環境下のLinux*1で使う場合、環境変数http_proxyは小文字で設定する必要があります。ちなみにこれはcurlコマンドでも同じです。ちなみにhttps_proxyもしくはHTTPS_PRO…

.NET Core on Linux の今年をふりかえってみる

.NET Core Advent Calendar 3日目です。 qiita.com 昨日のPowerShell on Linux に続いて、.NET Core on Linux (特に.NET Core on RHEL)の現状を、アプリをどうやって開発するのか?に焦点を置いて軽くふりかえってみたいと思います。 .NET Core のリリースと…

MVP Summit のハッカソンで.NET Core CLIの拡張を作りました

MVP Global Summit 2016に参加して来たのですが、今年は木曜に行われるハッカソンまで参加してきました。ツアーで行くと木曜の朝出発するスケジュールなのでずっと参加できなあったのですが、今年は自分で予約したので参加できました。10個くらいのテーマが…

Roslyn Analyzer を.NET Coreで参照する

C# 6でコンパイラープラットフォームとしてRoslynが導入され、コンパイラー拡張を作れるようになりました。今回は.NET Core on Linuxでこれが利用できるか試すことにしました。 Code RefactoringはVSIXであり、Visual Studioなしでは動きません。Diagnostic …

ASP.NET Core RC2 on Linux で空のWebプロジェクトにMVCの機能を追加する

.NET Core RC2がリリースされたので、早速さわってみることにしました。 RHEL上ではまだサポートされていませんが、とりあえずCentOS用のインストールと同じコマンドを実行するとインストールできることもわかりました。 今回やった範囲では、基本的に.NET C…

.NET Core RC2 がリリースされました

.NET Core RC1 (2015/11/18) より約半年、ようやくRC2がリリースされました。 .NET - Powerful Open Source Development さあ、さっそく .NET Core RC2 on RHEL を試そうといきたいところですが... .NET Core on RHEL は Red Hatから提供するためか、もうし…

Visual Studio Code の C# Debugging を .NET Core on RHEL でやってみる

できるようになったという記事を見たので試してみました。 stufftoddknows.com せっかくなので動作確認した手順をまとめておきました。

VSTS でAPIからビルドをキャンセルする

APIからビルドをQueueに積むのは専用のAPIがあります。 tech.tanaka733.net では、いったんQueueに積まれたビルドをAPIからキャンセルしたいときはどうしましょう?API一覧にキャンセルとかストップといった類のメソッドはありません...*1 *1:Deleteはあるの…

2015年を振り返って

去年は振り返り記事を書かなかったのですが、今年を振り返ってみたいと思います。 C# 仕事 MVP活動 登壇 執筆 ブログ 趣味 来年 C# なんといってもRoslynでしょう。ただ、Roslynの機能は比較的小さめにリリースされましたし、C# 6.0の新機能も前々からプレビ…

UWPのデバッグ実行になぜか失敗するので、slnフォルダをDドライブからCドライブに移動したら解決した件

久しぶりにUWPアプリでも開発しようかなあと思ったら、デバッグ実行できなくなる現象に遭遇してしまいました。デバッグ実行しようとすると、こんな風にUnhandled Exceptionが発生したといわれます。 イベントビューアーを見ると、Windowsrログ>アプリケーシ…

Assembly.LoadFrom するDLLの中でAssemblyBinding したくて困った話

C#

VSTS拡張の話はまだ続きますが、今日困ったことが解決したのでネタにしました。 Plugin的な機構を実現したくて、Assembly.LoadFromでDLLを読み込んでいる箇所があるのですが、読み込んだDLLの先で呼び出しているライブラリ(実際にはNewtonsoft.Json)のバージ…

VSTSのAPIを使ってビルドログを取得する

以前紹介したVSTSのService WebHookを受け取る処理の中で、ビルドの詳細を送信したいため、APIを使ってビルドログを取得することにしました。 tech.tanaka733.net コードはこんな感じです。 var build = new BuildHttpClient(new Uri("https://<yoruaccount>.VisualStudio</yoruaccount>…

VSTS の APIを使って指定したビルド定義をビルドキューに積む

VSTSにはAPIがあるので、指定したビルド定義をビルドQueueに積むことができます。 Visual Studio Team Services and Team Foundation Server REST API Reference ビルド周りについてはこちら。 Builds | REST API Reference for Visual Studio Team Services…

RPi2 で Windows IoT (5) Azure IoT Hub その2 メッセージを受け取る

前回の反対にIoT Hubからメッセージを受信する方法です。ドキュメントにもあるのですが、IoT Hubではメッセージを最低1回は受信するように保証(到達保証)する ことができますが、そのためにはデバイス側で受け取ったという通知をIoTHubに返してあげる必要が…

RPi2 で Windows IoT (4) Azure IoT Hub その1 メッセージを送る

今回は毛色を変えて Azure IoT Hubにつなげてみます。 azure.microsoft.com MSのエヴァんじぇリストの方が記事にしているのですが、まだPreviewでここからもさらに様子が変わっている感じです。 IoT HubにWindows 10 IoT Coreでつなぐ - デバイスとITの架け…

AWS Tools for Windows PowerShell と SDK for .NET を参照するCmdletを組み合わせたらMissingMethodExceptionが出た話

あまりこの現象に遭遇することはないと思いますが、遭遇してそれなりに原因究明に時間がかかったのでまとめておこうと思います。 AWSにはWindows環境でAPIを実行するツールとして、Tools for PowerShell と SDK for .NET があります。 AWS Tools for Windows…

ASP.NET WebHooks で VSTS のService Web Hook を受け取る

Visutal Studio Team Services(VSTS)でビルド結果を通知するにはService Hooksを使います*1。Integrated されているサービスもあるのですが、これ以外のサービスと連携するには自前でWeb Hookを作る必要があります。 Integrate with service hooks | Visual …

VSTO で WPF を使うには

Office アドイン Advent Calendar の8日目です。 www.adventar.org VSTOでUIを作るのはWindows Formsの方が対応されてはいます。しかし、私を含めWindows デスクトップでGUI作成といえばWPFばかりやってきているので、WPFを使いたい!という人も多いと思いま…

UWP でもバーコードスキャン機能を実装したい

先日のエントリの最後に触れていた話です。 tech.tanaka733.net 試してみると実はそこまで難しくなくバーコード(QRコード)を読み取ることができました。簡単になった最大の理由は、Microsoftが提供しているUWPのサンプルです。 github.com カメラを使ってPre…

ASP.NET 5 の Logging について

ASP.NET Advent Calendar 6日目です。 qiita.com ASP.NET 5 でLoggingの機能が一新されます。今日は簡単に紹介したいと思います。なお下記のドキュメントを参考にしつつ、コードは ASP.NET RC1 時点のものを参照しているため、Nugetのパッケージ名など一部が…

Visual Studio SDK で拡張を作るときに知りたい情報の探し方

Visual Studio / Visual Studio Code Advent Calendar 2015 の4日目です。 qiita.com 先日のConnect(); でVisual Studio Marketplace というものが発表されましたが、当面個人開発者の作ったVisual Studio拡張は今まで通りのVisual Studioギャラリーで公開す…

Ubuntu で CoreCLR で HelloWorld したい

C# Advent Calendarの3日目です。 qiita.com 先日のConnect(); 2015 で .NET CoreとASP.NET 5 がRCになりました。 blogs.msdn.com そのあと、C#ユーザーグループの勉強会で Ubuntu で .NET Coreを動かそうとしたけどなかなかうまくいかないという話もあった…

RPi2 で Windows IoT (3) RGBエルーチカ

Raspberry Pi Advent Calendar 2015の2日目です。今回はWindowsを使ってRGBの3色が点灯するLEDを扱ってみます。 www.adventar.org Advent Calendar経由で来られた方の中には、Raspberry Pi でWindows?という方もおられるかもしれません。(1)の記事でWindows…

Windows Phone アプリでバーコードスキャン機能を実装したい (WP8.1編)

Windows Phone Advent Calendar の1日目です。 www.adventar.org 先日、Doorkeeper のイベント管理者がチェックインをWindows Phoneから行うためのアプリをリリースしました。 www.microsoft.com OS標準のバーコードリーダーを使うと、いちいちブラウザを起…

Visual Studio 拡張でファイル保存イベントをフックする

Visual Studio拡張を作っているときに、特定のファイルの保存イベントを検知して、それに対する処理を書きたくなりました。 調べてみるとDocumentSaved というものが割とヒットするのですが、これMSDNには内部向けのAPIで利用者が使うことを想定していないよ…

Amazon Glacier に保存しているアーカイブのIDを忘れたら、削除するのも大変だった件

1年半ほど前に家族の写真とか100GB~(将来的に)1TB程度のファイルをどこにバックアップしようかなと思って、Amazon Glacierを使い始めました。 しかし、Glacierの課金体系などを完全には理解しておらず、いざ復元するときに使いづらいことがわかったので使う…

RPi2 で Windows IoT (2) エルーチカ をコンパイル時バインディングでやってみる

Raspberry Piのセットアップができたので早速アプリを作って動かしてみます。最初はべたなLED点滅から。 必要な電子工作の部品はこちら LED 270Ωの抵抗 ブレッドボード オス-メス のジャンパーワイヤ2本 ちなみにUWPのアプリを動かして操作するにはディスプ…

VisualStudio 2015 のcsproj をいじるためのVS拡張 CSProjUtil をリリースしました

インストールはVisual Studio Galleryから。 visualstudiogallery.msdn.microsoft.com コードはGitHubで公開しています。 github.com 使い方はVisual Studio Galleryの方に載せていますが、ソリューションエクスプローラーでプロジェクトを右クリックして「C…

jsonをクラスとして貼り付けたあとに、プロパティ名をPascal Case に変更する CodeFixProvider を作ってみた (要Json.Net)

最近のVisual Studioでは jsonの文字列をコピーして、C# のクラスとして貼り付ける機能があります。 なんですが、これ元のjsonのキーが snake_case の場合、できたC#のクラス名も snake_case になるので気持ち悪いんですね。 C# でjsonを扱う多くの場合、Jso…

#5joffice で VSTO について話してきました

html5j 番外編 Microsoft Officeセミナー その1 で、「Introduction to VSTO」というタイトルでVSTOについて話してきました。 html5j 番外編 Microsoft Officeセミナー その15joffice.doorkeeper.jp 資料はこちらになります。 20150423 introduction tovsto …

Visual Studio 拡張(VSIX)用のプライベートリポジトリを作ろう

最近 Visual Studio拡張ツールの開発にはまっているのですが、パブリックに公開したいものであれば Products and Extensions for Visual Studio で公開するのがお手軽ですし、ダウンロードもしてもらえます。しかし、時には社内にのみ配布したい拡張もあるで…

Open for PowerShell Cmdlet v1.1 をリリースしました

OpenForPSCmdlet extensionvisualstudiogallery.msdn.microsoft.com すでにインストールしている方はアップデートがかかるはずです。 v1.0ではモジュールをImportした状態でPowerShell Consoleが開きましたが、v1.1ではこのConsoleのプロセスにアタッチして…

PowerShell Cmdlet のデバッグを楽にする、 OpenForPSCmdlet VS拡張

PowerShell Cmdlet のバイナリモジュールを作ったことがある方はわかるとおもうのですが、バイナリモジュールを実際にPowerShellで実行して動作を確認するためには、ビルドしたdllをImport-Moduleで読みこむ必要があります*1。さらに、一度 Import-Module す…

PowerShell Cmdlet バイナリモジュールのプラクティスまとめ (1) スレッド・Rx編

今まで何度か、PowerShell Cmdlet バイナリモジュール(C#でdllを記述し、Import-Moduleで利用するCmdlet)について書いてきました。実際、Cmdletを実戦投入して運用していますが、実際に運用してみるとなかなかはまりどころが多いこともわかりました。何回か…

リモート接続先で接続元の情報を C# で取得する

C#

リモート接続先で起動するアプリで、接続元の情報を取得したい事案が発生しました。 そんなときはこの関数を使えばよさそうです*1。 WTSQuerySessionInformation 関数 DllImportすれば C# でも書けますね、ということで書いてみました。sessionId は WTS_CUR…

パイザオンラインハッカソン4 の C# での解答を晒してみる

C#

パイザオンラインハッカソン4 というのが行われているのですが*1、 エンジニアでも恋がしたい〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラインハッカソン4 Lite なんかTwitterで@numa08氏を煽ってしまったようなので、せめて自分の解答くらい…

CLR/H in Tokyo 第7回で ETWとカスタムパフォーマンスカウンタについて話しました #clrhtky7

CLR/H in Tokyo 第7回 で話してきました。 CLR/H in Tokyo 第7回 (2014/12/20 10:30〜) 資料はこちらになります。 20141220 clrh etw from Takayoshi Tanaka 資料中にリンクはあるのですが、ETWとは?とか今までのイベントログとの違いとは?についてはこち…

【読み始めました】 「Pro Unity Game Development with C#」

Unity Advent Calendar の10日目のエントリ...だったのですが、いろいろ体調不良が重なり当初書評を書く予定で読んでいた本が読み切れませんでした...というわけなので、なぜこの本を読もうとしたのかと、読んだところまでの感想を書きたいと思います。 Unit…

ASP.NET/IIS 上で X509Certificate2 をバイト配列指定で生成するときは、 Application Pool の実行ユーザーのプロファイルを読みこませないといけません

C# Advent Calendar と ASP.NET Advent Calendar の9日目のエントリです。 C# Advent Calendar 2014 - Qiita ASP.NET Advent Calendar 2014 - Qiita もともと別の内容を書くつもりだったのですが、仕事であまりにはまったことがあったので、それを書こうと思…

.NET アプリから BigQuery に Streaming Insert する方法

このブログは Google Cloud Platform Advent Calendar 2014 の7日目のエントリです。 Google Cloud Platform Advent Calendar 2014 - Qiita Google Cloud Platform Advent Calendar 2014 - Qiita さて、以前テーブルをAPIから生成する方法は紹介したのですが…

PowerShell Cmdlet の中でRxを使いたい

PowerShell Advent Calendarの4日目の記事です。 PowerShell Advent Calendar 2014 : ATND PowerShell Advent Calendar 2014 : ATND 去年もPowerShell Advent Calendarなのに C# な話だったんですが、今年も性懲りもなくC# コード満載のCmdletネタになります…

CloudWach (Windows版)に.NET アプリから独自のイベントログとパフォーマンスカウンタを送信する方法

このエントリは、AWS Advent Calendar 3日目の記事です AWS Advent Calendar 2014 - Qiita AWS Advent Calendar 2014 - Qiita 先日出た CloudWatch にWindows Serverからイベントログやパフォーマンスカウンタの値を送信できる機能ですが、これを使うことに…

Visual Studio 2015 で強化されたリファクタリング機能について

Visual Studio 2015 の1日目です。 Visual Studio Advent Calendar 2014 - Qiita Visual Studio Advent Calendar 2014 - Qiita 一発目なので最新の機能の中からデバッグ関連の機能を軽く紹介したいと思います。 リネーム機能 変数名のリネーム機能が強化され…

第7回中心会議で C# 6.0 を中心にお話ししてきました #devchu

第7回業開中心会議 『2015年に到来する大変革「次期.NET/ASP.NET/Visual Studio、Windows 10」に備えよ』 で、話した資料になります。 20141129-dotNet2015 from Takayoshi Tanaka 20141129-dotNet2015

TopShelf と MSDeploy で作る、Windowsサービスお手軽自動展開環境

Windows上で長期間に渡ってバックグランドで動くようなプログラムを作るのに、Windowsサービスを使うことができます。 Windows サービス アプリケーションの概要 なんですが、WindowsサービスをVisual Studioにデフォルトで用意されているものだけで作ると割…

App.config の config変換をしてくれる便利すぎるVisual Studio 拡張「Configuration Transform」

コンソールアプリやWPFアプリを作っていて、アプリのコードは同一だけど配置先に応じて設定を切り替えたい、ということはないでしょうか?Webアプリの場合、 Web.config を変換する仕組みがデフォルトで備わっていて、このブログでも触れたことがあります。 …

VisualStudio "14" CTP4 の .NET 関連アップデート

C#

ここにきてアップデート関連の情報が多くなっている気がしますが、Visual Studio "14" CTP4 が出ました。リンク先から飛べるダウンロードページ、もしくは AzureのImageギャラリーから利用可能です。 .NET Blog Announcing October 2014 Updates to .NET Fra…

C# で WMI を使って実行中プロセスの一覧とそのオーナーを取得する

とあるC#で書いているツールでプロセスIDからそのプロセスのオーナーを取得する必要が出てきました。自分のプロセスであれば比較的容易に取得できますが、他プロセスの情報となると難しくなります。そこで、WMI .NET を利用してプロセスの一覧とそのオーナー…