テンプレートテスト
ブログの説明
ブログの説明2
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
Home
›
Archives for 8月 2018
2018/08/31
image
NO IMAGE
OpenCover がエラーコードを返さない
update
event_note
label
.NET Core
label
.NET Framework
label
テスト
テスト失敗時に OpenCover がエラーコードを返さない場合の対処方法です。
C# で作成したアプリケーションのカバレッジを計測するために OpenCover を使用しているのですが、通常だとテストに失敗しても OpenCover がエラーコードを返さないために、エラーを検知できません。 この場合、OpenCover のオプションに `-returntargetcode` を追加します。 これにより、ターゲットプロセス(私の場合は `dotnet test` でテストを実行しているので `dotnet`)が返したコードを OpenCover がそのまま返すようになり、エラーを検知できるようになります。 詳細は以下に書いてあります。 - https://github.com/opencover/opencover/wiki/Usage
Read more
2018/08/30
依存している dll が出力フォルダにコピーされない
update
event_note
label
.NET Framework
label
.NET Standard
label
Visual Studio
.NET Framework で作成しているアプリケーションで、.NET Standard で作成されたライブラリを参照している場合、依存している dll が出力フォルダにコピーされませんでした。
## 環境 - Visual Studio 2017 - .NET Framework 4.6.1 - .NET Standard 2.0 ## 依存関係 まず、説明の都合上以下のように定義します。 - .NET Framework で作成したアプリケーションを **A** とする - .NET Standard で作成したライブラリを **B** とする - その .NET Standard で作成されたライブラリが依存している他の dll などを **C** とする 依存関係は A -> B -> C のようになります。 このとき、A をビルドすると、出力フォルダに B の dll はコピーされるのですが、C の dll がコピーされないという状況になりました。 ## 原因と解決策 NuGet のパッケージ管理には `packages.config` 形式と、`PackageReference` 形式があるようです。 `packages.config` 形式だと今回のような現象が起こるようで、`PackageReference` 形式に移行すれば解決します。 - https://docs.microsoft.com/ja-jp/nuget/reference/migrate-packages-config-to-package-reference 尚、.NET Core で新規にプロジェクトを作成した場合は `PackageReference` 形式になるようなので、今回のような問題は発生しません。 ## 移行方法 Visual Studio で `packages.config` から `PackageReference` へマイグレーションすることができます。 ソリューションファイルを開き、プロジェクト内の `packages.config` を右クリックします。 `Migrate packages.config to PackageReference...` を選択するとマイグレーションの画面が表示されるので、OK を押すとマイグレーションが実行されます。
`Migrate packages.config to PackageReference...` のメニューが表示されない場合は、Visual Studio の設定を見直してみてください。 NuGet のデフォルトのパッケージ管理方式が `PackageReference` になっているとマイグレーションのメニューは表示されないようなので、`packages.config` に変更してください。
尚、stackoverflow では .NET Framework で作成したアプリケーションのプロジェクトファイル (.csproj) を開き、`PropertyGroup` に以下を追加すれば OK というのがありました。 ```
PackageReference
``` しかし、この場合 `package.config` で管理しているパッケージが未インストールされていない状態になるので、既に `package.config` が存在する場合はマイグレーションを行ったほうが良いと思います。
## 参考 URL - https://docs.microsoft.com/ja-jp/nuget/reference/migrate-packages-config-to-package-reference - https://github.com/NuGet/docs.microsoft.com-nuget/issues/905 - https://stackoverflow.com/questions/51155274/copy-all-dependencies-from-net-standard-libraries-to-net-framework-console-app
Read more
2018/08/28
image
NO IMAGE
Moq でインデクサーの振る舞いを実装する
update
event_note
label
ASP.NET Core
label
C#
Moq でインデクサーに対する振る舞いをどう実装したら良いかわからなかったので、調べてみました。
具体的には、ASP.NET Core で多言語対応を行う際に、`IStringLocalizer` に対する振る舞いを Moq で実装する必要がありました。 この場合、以下のように実装すれば OK です。 ```cs var mock = new Mock
>(); mock.Setup(p => p[It.IsAny
()]).Returns(new LocalizedString("foo", "bar")); var controller = new HomeController(mock.Object); ```
## 参考 URL - https://stackoverflow.com/questions/340827/how-to-moq-an-indexed-property
Read more
2018/08/26
image
NO IMAGE
[C#] 浮動小数の 0 除算
update
event_note
label
C#
整数値を 0 で除算すると `DivideByZeroException` が発生しますが、浮動小数の場合は発生せず、非数値(NaN)が返ってきます。
- https://msdn.microsoft.com/ja-jp/library/s0bwkaz3.aspx なので、0 除算が発生したかどうかは、演算結果が非数値(NaN)かどうかで分かります。 しかし、以下のように直接比較しても一致しませんでした。 ``` if (value == double.NaN) { } ``` 非数値(NaN)かどうか調べたい場合は以下のように書くようです。 ``` if (double.IsNaN(value)) { } ```
Read more
2018/08/20
image
NO IMAGE
AdminLTE のサイドバーが開閉しない
update
event_note
label
JavaScript
AdminLTE のサイドバーが開閉せずちょっとはまったのでメモしておきます。
AdminLTE のサイドバーが開閉せず、ブラウザのデバッガを見ると、以下のエラーメッセージが表示されていました。 ``` tree.slideUp is not a function ``` 原因は jQuery のスリム版を使っていたことで、`slideUp` というメソッドは `jquery.slim` にはないようです。
Read more
2018/08/17
Productivity Power Tools をアンインストールしても機能が無効化されない
update
event_note
label
Visual Studio
Visual Studio 2017 の拡張機能 `Productivity Power Tools` に関することです。
Visual Studio 2017 に拡張機能 `Productivity Power Tools` をインストールしたのですが、Visual Studio の動作がかなり重くなったのですぐにアンストールしました。 しかし、アンインストールしても `Productivity Power Tools` で追加された機能が無効化されず、何でだろうと思い、調べてみました。 ## 原因 Visual Studio 2017 からは `Productivity Power Tools` の各機能が個別のプラグインとしてインストールされるようになったそうです。 - http://www.atmarkit.co.jp/ait/articles/1704/04/news030.html 従って、`Productivity Power Tools` をアンインストールしても個別のプラグインは残ったままなので、機能が無効化されるわけではないということのようです。 ## 対策 現状 `Productivity Power Tools` で追加された機能を無効化するには、追加されたプラグインを個別にアンインストールしていくしかないようです。 - https://github.com/Microsoft/VS-PPT/issues/149 面倒ですね。 ただ、`Productivity Power Tools` の機能を全部使うと重いですが、必要な機能だけを残して、不要な機能はアンインストールすればかなり軽くなったので、個別のプラグインとして提供されるようになったこと自体は良いと思います。 尚、拡張機能のアンインストール画面において、`Productivity Power Tools` により追加されたプラグインかどうかはアイコンで判別できます。 アイコンの右下に緑色の電球マークがついているものは、`Productivity Power Tools` により追加されたプラグインです。
## 参考 URL - http://www.atmarkit.co.jp/ait/articles/1704/04/news030.html - https://github.com/Microsoft/VS-PPT/issues/149
Read more
2018/08/08
image
NO IMAGE
ASP.NET Core でファイルのダウンロードを実装する
update
event_note
label
ASP.NET Core
ASP.NET Core でファイルのダウンロードの実装例です。
`Microsoft.AspNetCore.Mvc.ControllerBase.File` を使用します。 ## サンプル 例えば、JSON のダウンロードは以下のようになります。 ```cs public IActionResult Download() { var str = "{ \"foo\" : \"test\" }"; var filename = DateTime.Now.ToString("yyyyMMddHHmmss") + ".json"; //ファイルをダウンロード return File(new MemoryStream(Encoding.UTF8.GetBytes(str)), "application/json", filename); } ```
## 参考 URL - https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.controllerbase.file?view=aspnetcore-2.1
Read more
2018/08/03
image
NO IMAGE
foreach 内でインデックスを取得したい
update
event_note
label
C#
foreach 文の中で、インデックスを取得したい、今は何回目の処理なのか知りたい、という場面がたまにあります。
例えば、要素の最初だけ、または最後だけ特別な処理や追加の処理をしたいというとき。 今までは、別途インデックス用の変数や一回だけ処理を処理を行うためのフラグ変数等を用意していたりしましたが、以下でなかなか良い方法が紹介されていました。 - http://www.atmarkit.co.jp/ait/articles/1702/22/news019.html 特に C# 7.0 以降でタプルを使うと結構シンプルに書けます。 ```cs foreach (var (value, index) in collection.Select((v, i) => (v, i))) { Console.WriteLine($"{index}:{value}"); } ``` 拡張メソッドとして定義する方法なども紹介されているので、詳細は参考 URL を参照してください。
## 参考 URL - http://www.atmarkit.co.jp/ait/articles/1702/22/news019.html
Read more
2018/08/02
image
NO IMAGE
DateTime 型を UTC から JST に変換
update
event_note
label
C#
世界標準時間(UTC)を日本時間(JST)に変換したい場合、タイムゾーンを取得してから変換するようです。
日本時間のタイムゾーンは `Tokyo Standard Time` で取得できます。 ここでは拡張メソッドとして実装してみました。 ```cs public static DateTime ToJst(this DateTime utc) { var jstZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); return TimeZoneInfo.ConvertTimeFromUtc(utc, jstZoneInfo); } ```
Read more
2018/08/01
image
NO IMAGE
ASP.NET Core の非同期コントローラー
update
event_note
label
ASP.NET Core
ASP.NET Core において、Controller を非同期にすることに対していろいろ疑問が湧いたので調べてみました。
## CPU バウンド と I/O バウンド 非同期で処理を行うのは、処理に時間がかかるからですが、そこには以下の2つのパターンがあります。 ### CPU バウンド 単純に計算に時間がかかる処理のことで、CPU に負荷がかかっている状態です。 ### I/O バウンド 他の Web サーバーや DB サーバーなどに問い合わせを行ったりするなど、外部リソースへのアクセスに時間がかかる処理のことです。 ## ASP.NET Core における非同期処理 GUI アプリケーションにおいては、UI スレッドを止めないなどの理由で非同期処理を行います。 しかし、ASP.NET では理由は異なり、スレッドプールスレッドを解放し、スループットを向上させることが目的のようです。 ### リクエストはスレッドプールスレッドで処理される ASP.NET の記事ですが、HTTP リクエストに対する処理はスレッドプールから割り当てられたスレッドで処理されるそうです。 確証はありませんが、ASP.NET Core も同じなのではないかと思います。 ### Task.Run もスレッドプールスレッドで処理される `Task.Run` を使用した場合もスレッドプールから割り当てられたスレッドで処理されます。 ### リクエスト処理スレッドでは Task.Run してはいけない 以上より、リクエスト処理中に `Task.Run` により処理を非同期にしても、スレッドプールスレッドを占有してしまうことは変わりなく、寧ろスレッドの切り替え処理が入ることによるマイナス面しかないため、`Task.Run` は使用してはいけない、ということのようです。 ### 非同期コントローラーはいつ使用する? 以上を踏まえた上で、非同期コントローラーは I/O バウンドのときに使用するのが最も有効です。 ### じゃあ CPU バウンドな処理を行いたい場合は? 調査中。 そもそもそんな処理をサーバーでやってはいけないのかもしれませんが・・・。
## 参考 URL - https://msdn.microsoft.com/ja-jp/magazine/dn802603.aspx - https://qiita.com/mash0510/items/335ef5c17d6eb320c6b2 - https://code.i-harness.com/ja/q/1d269c0 - https://teratail.com/questions/90126 - https://books.google.co.jp/books?id=VOFLDwAAQBAJ&pg=PT150&lpg=PT150&dq=ASP.NET+CPU+%E3%83%90%E3%82%A6%E3%83%B3%E3%83%89&source=bl&ots=bGKmy0iIkB&sig=jvGZBsJz0uQHKeDwl7ZsAl2n5r4&hl=ja&sa=X&ved=0ahUKEwjdtKzgtLncAhWCXrwKHVCkBggQ6AEINjAB#v=onepage&q=CPU%20%E3%83%90%E3%82%A6%E3%83%B3%E3%83%89&f=false
Read more
新しい投稿
前の投稿
ホーム
Translate
Popular Posts
TortoiseGit でコミットメッセージを変更する
image
NO IMAGE
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
[ASP.NET Core] 前のページ(遷移元)の URL を取得する
image
NO IMAGE
外部 DLL を NuGet パッケージに含める方法
image
NO IMAGE
[C#] SonarQube で .NET アプリケーションのコード解析を行う
image
NO IMAGE
[ASP.NET Core] Form value count limit 1024 exceeded のエラーが発生した
image
NO IMAGE
マージ元ブランチとマージ先ブランチ
TortoiseGit でリモートリポジトリのタグを削除する
image
NO IMAGE
C# で GitHub からリリースバージョンを取得する
[Jenkins] エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
Apache
3
AppVeyor
2
AsciiDoc
3
ASP.NET Core
55
Atom
4
AWS
2
AWS Cloud9
4
blockdiag
1
Blogger
10
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
Codecov
1
CSS
1
Docker
28
DokuWiki
4
Doxygen
1
draw.io
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
2
Firefox
5
Git
12
GitBook
4
GitBucket
7
GitHub
7
GitLab
30
Go
1
Google
1
Google Cloud Platform
1
Grafana
5
HTML
5
IIS
8
InfluxDB
6
JavaScript
7
Jenkins
7
Linux
25
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MVC
1
MVVM
6
NLog
3
Node.js
3
npm
1
OpenSSL
3
ownCloud
2
Pine Script
1
PlantUML
5
PowerShell
7
Prism
2
Python
11
Razor
3
Redmine
30
remark.js
2
rocketchat
4
Ruby
3
SignalR
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
t
1
TestLink
2
Tomcat
2
TortoiseGit
10
TortoiseSVN
2
Trading View
1
Travis CI
1
Ubuntu
13
Visual Studio
39
Visual Studio Code
9
Vue.js
8
Windows
56
Windows 10
4
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
1
Xamarin
1
xUnit
5
アプリケーション
1
デザインパターン
1
テスト
3
バッチファイル
2
ぴよ
3
プログラミング
3
ライセンス
1
ラベル
3
ラベル1
2
英語
2
雑記
1
書籍
1
数学
1
正規表現
1
Blog Archive
►
2022
(1)
►
2月
(1)
►
2021
(24)
►
5月
(7)
►
4月
(8)
►
3月
(2)
►
2月
(2)
►
1月
(5)
►
2020
(60)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(7)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
▼
2018
(100)
►
12月
(1)
►
11月
(11)
►
10月
(8)
►
9月
(6)
▼
8月
(10)
OpenCover がエラーコードを返さない
依存している dll が出力フォルダにコピーされない
Moq でインデクサーの振る舞いを実装する
[C#] 浮動小数の 0 除算
AdminLTE のサイドバーが開閉しない
Productivity Power Tools をアンインストールしても機能が無効化されない
ASP.NET Core でファイルのダウンロードを実装する
foreach 内でインデックスを取得したい
DateTime 型を UTC から JST に変換
ASP.NET Core の非同期コントローラー
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)