xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

.NET

SDK Style の csproj で ASP.NET (.NET Framework) を動かす

世の中は .NET 6 RC1 がリリースされ、.NET 6 (LTS) の時代がもうすぐそこまで来ています。が、現実はそんなに甘くない!.NET Framework 4.8 + ASP.NET MVC 5 で頑張っている人もいるんです!ただ、一度でも .NET Core 時代の SDK Style の .csproj (新形式)…

.NET 5 未満でもモジュール初期化子を利用する

.NET 5 じゃなくても C# 9.0 をできる限り使いたい!そんなあなたのために「.NET 5 未満でも」シリーズ第 2 弾。第 1 弾はこちら。 今回はタイトルにある通りモジュール初期化子についてですが、それ自体の用途や詳細挙動は岩永さんのサイトに譲ります。 .NE…

.NET 5 未満でも C# 9.0 の init アクセサを利用する

init アクセサは大変良いです。C# 9.0 で追加された初期化のタイミングでのみプロパティに値を設定できる set アクセサです。アクセシビリティは狭ければ狭いほどコードは安全になるので、僕は set を見たらとりあえず init に置き換える勢い! .NET 5 未満…

_FunctionsSkipCleanOutput を利用しないで Azure Functions プロジェクトのビルド時 DLL 自動削除から DLL を保護する

タイトルが長過ぎてなんのこっちゃワカランと思います。僕も良いタイトルが浮かびません...( 今回は下記の Issue の内容と公式回答についてザックリ解説します。僕の理解が正確かは分からないので、Issue も読んでもらえると助かりますw Issue の内容 System…

C# / .NET 向けの Paidy SDK を公開しました

あの Amazon でも利用できる (特に) 若者に人気の Paidy 決済。その API の C# / .NET 向けラッパーを作成し、公開しました!普段 EC サービスの開発 / 運用を業務で行っているのですが、とあるお客様で Paidy 導入が必要になったので作りました。 本当はす…

POST を維持したままリダイレクトする

Web サービスを使っているとレスポンスとしてリダイレクトを返すことはちょくちょくあると思います。このとき 301 / 302 のようなステータスコードを返すとたとえ POST リクエストであっても GET に強制変更されてリダイレクトされてしまいます。通常はこの…

XSitemaps - SEO のためのサイトマップファイルを作る

業務で (主に) EC サイトの実装 / 運営をしているのですが、EC サイトと言えば SEO!お客様が来ないことには商売にならないので、検索エンジンを上手に操って流入を確保することは非常に重要です。ということで、ページのクローリングを制御するために Googl…

WCF で認証が必要な Proxy を利用する [.NET Framework / .NET Core / .NET Standard 完全対応]

gRPC という超クールなものが大人気な昨今、WCF なんてひと昔もふた昔も前のもの...と鼻で笑っているあなた!古き良き (?) WCF はまだまだ現役の世界線もあるのですよ! ゴンドアの谷の歌にあるもの。「WCF に根を下ろし、SOAP と共に生きよう。XML と共に …

FastEnum の初期化コストと利用指針

先日、FastEnum に関して非常に良い質問を受けました。短期間だけ起動してすぐにアプリ/インスタンスが死んでいくバッチ処理などにおいては、逆に初期化コストが大きくなってしまうのでないか?というものです。 はい、初回アクセス時に一度のみ初期化される…

ASP.NET Core 3.0 で cshtml の Edit & Continue を有効化する

ASP.NET Core でフロントエンド開発をするときは「デバッグ実行しながら cshtml の編集をしてブラウザを Reload!」というのが王道中の王道なのではないかと思います。所謂 cshtml に対する Edit & Continue です。少なくとも僕は今までずっとそうしてきまし…

DeclarativeSql rebooted - Now supports .NET Standard 2.0

数年間開発を放置した DeclarativeSql を更新して .NET Standard 2.0 に対応させました!過去バージョンとの互換は結構崩れてしまっている点は大変申し訳ないのですが、今の自分が欲しいなぁという機能をシンプルに詰め込むために致し方なし。 実は .NET Cor…

FastEnum - 更なる高速化を果たした v1.1.0 リリース

先の記事で FastEnum という超高速な Enum Utility ライブラリを作ってリリースしてから 3 日。v1.1.0 をリリースしました。パフォーマンスはさらに磨きがかかっていて、他の追随を許さないレベルに昇華されました。最早グラフにしても棒が表示されてない...…

FastEnum - 世界最速の enum ライブラリ

というのを、この数日をかけて勢いで作りました。ずーーっと昔から「enum は遅い」と言われ続けていたので何か手を入れたいと思っていたのですが、突然やる気になりました。久々にプライベートのコーディング意欲が爆上げしたー。勢いが強過ぎて毎日寝不足の…

LinkGenerator : ASP.NET Core の DI で利用可能な URL 生成機構

ASP.NET Core でリダイレクト機能を持つ Action Filter を作っていたときのこと。Controller や View で利用できる IUrlHelper を Action Filter で利用できないことに気が付きました。Controller だと以下のように Url プロパティで IUrlHelper にアクセス…

超絶大盛況!de:code 2019 で「ドキドキ・ライブコーディング対決」をやってきました

去る 2019/5/29 (水) - 2019/5/30 (木) に日本マイクロソフトが主催する年次開発者イベント de:code 2019 が開催されました。大変ありがたいことに @chack411 さんこと井上章さんから登壇の依頼を受け、北陸のコミュニティではもはや毎年恒例になっている「…

ReactiveSignalR を ASP.NET Core SignalR に対応させました

ASP.NET SignalR 時代に作り、ASP.NET Core SignalR が出てからも長らく放置していた ReactiveSignalR を ASP.NET Core SignalR 向けに作り直しました!ということで、晴れて v1.0 をリリース!バージョン番号なんて特に意味はないんですが...。 ASP.NET Sig…

Bug Fixed : n 秒間押し続けたらイベント発火するボタンを作る

前回 (というか昨夜)「3 秒押し続けたらイベント発火するボタン」を作ってみたのですが、朝起きてみたら早速以下のようなバグが発見されていました...(oh いつも参考にさせて頂いています!こういうケースZipだと、DownしたけどUpしなかった(Atl+Tabで別ウィ…

3 秒間押し続けたらイベント発火するボタンを作る

Twitter で @amay077 さんが以下のような内容を呟いていたのを見て、頭の体操と思って Rx を使って解決してみました。 3秒間押し続けてないと onClick 発火しないボタン的なの作りたいけど何が手っ取り早いかなー?エフェクト考えなくてもまあまあめんどいな…

Unity で ASP.NET Core SignalR を利用する

前回 に引き続き今回も SignalR ネタです。今回は Unity で ASP.NET Core SignalR を動かしてみようと思います。「そんなことできるんだっけ?」ともしかしたら思われるかもしれませんが、実は以下の理由によりできてしまいます! Unity 2018.1 以降は .NET …

CloudStructures v2.1.0 released!!

前回に引き続き今回も CloudStructures ネタです。.NET Standard 対応を行ってから来たフィードバックにお応えしたのと、反省点の修正 (?) を行いました。変更点は大きく 3 点あります。 RedisLock 型の追加 非同期メソッドとして提供しているコマンドに As…

CloudStructures now supports .NET Standard!!

Grani 時代から Redis 操作ライブラリとして長く愛用してきた CloudStructures ですが、残念ながらこれまで .NET Core に対応していませんでした。ただ、こればっかりはさすがの @neuecc 先生もあれもこれもメンテするのは難しいので仕方ない!.NET Core 対…

キャリッジリターン (CR) を無視する ModelBinder を適用する

タイトルの通りです、それ以上の情報がないのですが...!下記のドキュメントを参考に、そういうものを作りました。 動機 iOS の Safari から改行を含む <textarea> のデータを POST すると勝手に CR が付与されるという問題がありました。Form の Submit イベントを Ja</textarea>…

AcrInsight - Azure Container Registry のビューワーを公開しました

タイトルの通りですが、Azure Container Registry (= ACR) のリポジトリにあるイメージを閲覧するツールを作成/公開しました。 なんと (?) 4 日前の 2018/12/05 に Microsoft Connect(); 2018 で公開されたばかりの WPF on .NET Core 3.0 でできています!W…

Slack.Integration - Slack 連携ライブラリを公開しました

もはや 2 番煎じ、3 番煎じどころか 10 番煎じくらいのものですが、.NET アプリと Slack を繋ぐライブラリ Slack.Integration を作成し、公開しました!現時点では Incoming Webhook *1 にだけ対応していますが、そのうち Slash Command にも対応させる予定…

ConcurrentDictionary.GetOrAdd のファクトリーメソッドは排他制御されていない

というタイトルの通りなのですが、案外忘れがちです。例えば以下のような期待をしてはいけません。 //--- こんな排他制御機能付きの辞書があるとする var dic= new ConcurrentDictionary<string, int>(); //--- 値がなければ追加したいけれど... var value = dic.GetOrAdd</string,>…

OWINセルフホストのサービスを外部公開する

ASP.NET 5 が OWIN を互換レイヤーとしてサポートすることを決定したということで、OWIN is dead などという記事を書いたわけですが。率先して選ぶことは減ってきているのかもしれませんが、そうは言っても OWIN は (一応) 現役です。 ASP.NET 5はどうしてOW…

ClickOnceアプリケーションを外部exeから起動する

ClickOnce を使ってアプリケーションを配布している人は減っているような気がしないでもないですが、そうは言っても社内イントラネット環境などではやはり重宝します。そうするとアプリケーション連携などで ClickOnce アプリケーションを別の exe から起動…

非同期メソッド単位で値を保持/提供するAsyncLocal<T>

2015/07/20 深夜、ついに Visual Studio 2015 が正式リリースされました。同時に .NET Framework も 4.6 にバージョンアップ。以下の記事にもある通り、関連の言語やライブラリも数多く更新されています。 Announcing .NET Framework 4.6 .NET 4.6 (@mataril…

AccessViolationExceptionを捕捉できるようにする

最近お仕事で開発している SignalR 製の Web アプリケーションが本日... を遂げるという怪奇事件が起こりました。常時接続なので落ちないように結構気を配っていたので、かなり思わぬ事態でした。何事かとイベントビューアーでログを見ていると、ODP.NET を…

Microsoft MVP for .NET 4 期目受賞しました!!

大変ありがたいことに、今年も Microsoft MVP を受賞しました!昨期は Visual C# のカテゴリーでの受賞でしたが、今年は Visual Basic や F# とのカテゴリー統廃合により .NET での受賞です。今回で 4 年連続 4 期目。こんなに長い間、しかも継続できるなん…