redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

(小ネタ)Visual Studio Installer Projectsを使用し、アップデートに対応したインストーラーを作成する

Visual Studio Installer Projects拡張機能を使用すると、インストーラーを作成するためのプロジェクト(Setupプロジェクト)を作成できるようになる。 アプリケーションを更新するたびに、古いバージョンをアンインストールして、新しいバージョンをインス…

Dispatcher.InvokeとDispatcher.BeginInvoke、Dispatcher.InvokeAsyncの違い

WPFアプリケーションで、別スレッドから画面を更新したい場合は、DispatcherクラスのInvokeメソッドに、引数としてメソッドを渡して、UIスレッドで実行されるようにします。 ググってみると、DispatcherクラスにはInvokeメソッドの他に、BeginInvokeメソッド…

Prism のバージョンと Xaml.Behaviors.Wpf、System.Windows.Interactivity の対応状況を調査した

過去記事の Prismを使用したWPFアプリケーションのまとまったサンプルを作ってみた - redwarrior’s diary や、 WPFアプリのMainWindowの終了のキャンセルを、MVVMフレームワークを使用して実装する - redwarrior’s diary で使用している、prism:InvokeComman…

ProgressBarの表示をMVVMアーキテクチャで実装する

ProgressBarの表示って、非同期処理が入るので、意外と難しいですよね。 表示の仕方は、以下のサイトで分かりやすく説明されているのですが、素のWPFなのです。 anderson02.com どうせならば、MVVMアーキテクチャで実装したいなと思いやってみました。 まず…

MSIXアプリケーションをIISで公開する時の設定

MSIXアプリケーションをIISで公開する設定は、公式サイトに説明があります。 docs.microsoft.com 必要な部分だけ抜き出すと、IISで公開するためにはMIMEの構成を追加します。MSIXアプリケーションのフォルダの親フォルダに web.config を作成し、以下を記述…

Visual Studio 2019 で WCF Data Services のクライアントアプリケーションを開発する

過去の記事でサーバ側のアプリケーション(Web API)について書きましたが、クライアントアプリケーションを新しく作ることになりました。 redwarrior.hateblo.jp Visual Studio 2015で開発するならば、特に困らないのですが、Visual Studio 2019で開発した…

Visual Studioのファイルのプロパティのビルド アクションの「コンテンツ」と「なし」の違い

Visual Studioの ファイルのプロパティ のビルド アクションの値で「コンテンツ」と「なし」の違いを調べました。 Visual Studio上でファイルを選択して ファイルのプロパティ に表示される項目のうち、出力ディレクトリにコピー は、値を「常にコピーする」…

MSIX形式で配布すると、プロジェクトに含めたファイルが見つからない場合の対処方法

WPFプロジェクトに画像ファイルや、実行ファイル等を含めて、プログラムの中から参照したり、実行したりするのは珍しいことではないと思います。 Visual Studio上のソリューションエクスプローラーで対象のファイルをクリックして、プロパティから「出力ディ…

(小ネタ).NET CoreのWPFアプリケーションから、.NET Frameworkのコンソールアプリケーションを実行する方法

タイトルの内容をやりたい人はあまりいないと思いますが、必要になったので調べました。 以下が作業手順になります。 .NET CoreのWPFアプリケーション、.NET Frameworkのコンソールアプリケーションプロジェクトをソリューション内にそれぞれ作成します。 WP…

Prismを使用してサブウィンドウでRegionを使用した場合に発生したエラーと対処方法・その2

一つ前の記事で、サブウィンドウでもMainWindow(親ウィンドウ)と同一のRegionManagerを使用するように設定した。そうしたら、新たな問題が発生した。 サブウィンドウを閉じて、また開くとエラーが発生する サブウィンドウでもMainWindow(親ウィンドウ)と…

Prismを使用してサブウィンドウでRegionを使用した場合に発生したエラーと対処方法・その1

Prismを使用したWPFアプリケーションを開発していて、サブウィンドウでRegionを使用した場合に発生したエラーと対処方法 次の画面に遷移できない 現象 Regionを使用した画面遷移 ウィンドウのXAMLにRegionを設定し、コードビハインドで、IRegionManagerイン…

PasswordBoxのバリデーションをMVVMアーキテクチャで実装する

前提のはなし WPFでマスクのついたテキストボックスを作成するには、PasswordBoxというコントロールが用意されている。 PasswordBoxに入力した値は、string型のPasswordプロパティから取得できるが、セキュリティ上はSecureString型のSecurePasswordプロパテ…

TFS 2018 で MSIXの発行を行う

Visual Studio 2019からのMSIX形式のアプリパッケージの作成は、他サイトを参考にして出来るようになったので、TFS上でビルドする方法を調査しました。 一応、今回は以下の状態で始めました。 .NET Core 3.1の32bitのWPFアプリケーション Visual Studio 2019…

TFS 2018 のビルドが NuGet restore タスクで失敗したので調査する

少し前にソースコードの修正や、ビルド定義の編集をしていないのに、TFSのビルドが失敗するようになっていたので調査しました。 エラーメッセージ MSBuild auto-detection: using msbuild version '16.5.0.12403' from 'C:\Program Files (x86)\Microsoft Vi…

ClickOnceで使用できたコード署名が、MSIXで使用できない理由を調査し、対応した

背景 この間、ClickOnceの発行をする時に、使用したコード署名証明書(コードサイニング証明書)をPCの証明書ストアにインストールしたので、 .NET Coreアプリケーションの配布形式であるMSIXでも試してみました。 MSIX形式で配布する方法を調べると、以下の…

Entity Framework で SQLite を使用する

NuGetでSystem.Data.SQLiteパッケージをインストールし、以下をApp.configに追加する。 <entityFramework> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </provider></providers></entityframework>

TFS 2018 で ClickOnce の発行を行う

少し前に作成したWPFアプリケーションは、対象OSとしてWindows 8.1も含まれるため、フレームワークとして.NET Framework 4.5.1を使用しました。 Webアプリ(ASP.NET MVC)は、TFS上でビルド(XAMLではない)、リリースが出来るようにしたので(下記参照) redw…

Entity Framework CoreのInsert高速化 & InsertOrUpdateを行うライブラリ

数万件単位のレコードを登録するバッチアプリケーションを作成することになった。 公開されているWeb APIからデータを取得して、かなり編集をしてから登録するため、ストアドプロシージャは適していないし、生のSQLでやるのもミスが多そうなので避けたい。と…

WPFアプリのWindowの閉じる・開くを、MVVMフレームワークを使用して実装する

WPFアプリケーションで、自作のボタンを押して画面を閉じて、新しい画面を表示する処理をMVVMフレームワークを使用して実装する方法を調べました。 MVVMフレームワークは、Prismを使用します。 自作のボタンを押して画面を閉じる 自作のボタンを押して画面を…

WPFアプリのMainWindowの終了のキャンセルを、MVVMフレームワークを使用して実装する

WPFアプリケーションで、×ボタンを押してメイン画面を閉じるときに、ある条件を満たす場合は閉じないようにしたい場合があります。言い換えると、終了のキャンセルをしたい場合があります。 コードビハインドを使えば、簡単に実装する事が出来ますが(参考: …

2重起動防止処理を組み込んだWPFアプリでClickOnceの更新と再起動を行う

タイトルでやりたい事を伝えきったので、やり方を説明します。 ClickOnceの更新方法は、探せば見つかると思いますので割愛します。 参考:ClickOnce に関するまとめ - Qiita ClickOnceによる更新は、アプリケーションを再起動しないと行われません。 なので…

エラーメッセージがViewを切り替えると消える事への対処方法

課題 バリエーションエラー 一つ前の記事で、第5回のエラー処理のサンプルを作成した時に、バリエーションによるエラーメッセージを表示した状態で、一覧から別の項目を選択すると、Viewが切り替わり、右側に新しい画面が表示される。 その後、元の項目を表…

Prismを使用したWPFアプリケーションのまとまったサンプルを作ってみた

新しく作成するアプリケーションで、Windows Forms、WPFで開発するか悩んでいるチームがあったので、 説明用にWPFのサンプルを作成したが、お披露目する前にWindows Formsで開発する事に決まったようなので、勿体無いのでこちらで公開しようと思う。 サンプ…

OpenJDKをインストールしているのに、「Java 1.8(Java 8)が必要です」みたいなメッセージが表示される場合の対処方法

まさかの半年遅れで更新。すいません。しかもこの記事ほぼ完成していたのに、下書きのままになっていた。 以下の本を購入したので、試しています。 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践作者:徳丸 浩発売…

NLogを使用して、ログの出力先を切り替える(TFSのリリース管理を使用する版)

Visual Studioからの発行について、以前に以下の記事を書きました。 redwarrior.hateblo.jp ひとつ前の記事でリリース管理について書きました。 redwarrior.hateblo.jp リリース管理を使用して、ログの出力先を切り替えたいと思ったので、やり方を調べました…

TFS 2018 のリリース管理を使用して、IISにデプロイする

またも、3か月近く間が空いてしまいました。ネタはたまっているので、間隔をなるべくおかずに書いて行きたいものです。 以下の記事では、ビルド時のオプションで発行まで行いましたが、今回はリリース管理機能を使ってIISにデプロイしてみました。 redwarrio…

ASP.NET MVCでjQuery DataTablesを使用する

何番煎じなのかわかりませんが、jQuery DataTablesを使ってみたので、メモを残しておきます。試したバージョンは、1.10.12。 公式サイト: datatables.net ASP.NET MVCでは、NuGetを使用して導入します。jQueryはバージョン2系でも問題ありませんでした。バ…

SQL ServerのCHECK制約の設定方法

簡単な入力制限であれば、テーブルにCHECK制約をつける手もあるかなと思い、SQL ServerのCHECK制約の設定方法について調査しました。 SSDT(サーバーエクスプローラー) SSDTは、テーブル定義画面でCHECK 制約を追加できる。 CHECK制約の対象カラムは、カラ…

(まとめ)Redmineチケットの帳票出力にSSRSを使用する

これまで書いてきた記事を読めば、Redmineチケットの帳票出力にSQL Server Report Services(SSRS)を使用する事が出来ます。 出来る事ならRedmineのワークフローを使用して、Web上(Redmine上)で完結する事が望ましいのでしょうが、そうも行かない事もある…

SSRSで表や、一覧を使用してデータセットの内容を一覧表示する

前回の記事で、テキストボックスにデータセットの値を表示しました。 今回は、データセットのレコードを繰り返し表示する方法として、SQL Server Reporting Services(SSRS)のコンポーネントである表(テーブル)と一覧の 使い方を紹介します。 公式サイト…