ラベル VisualStudio の投稿を表示しています。 すべての投稿を表示
ラベル VisualStudio の投稿を表示しています。 すべての投稿を表示

2019年11月3日日曜日

Visual Studio で WebException が起きた時の直し方

How to fix a WebException error

過去に Visual Studio で作った ASP.NET 用の Web アプリを久しぶりに起動したら WebException や SocketException の例外が発生して起動できなくなってしまいました。
原因と解決の手順をまとめました。


環境

  • Windows 10
  • Visual Studio 2017


症状

何度実行しても同じ場所でIoException と WebException と SocketException の3種類の例外が同時に発生します。
System.Net.WebException: '接続が切断されました: 送信時に、予期しないエラーが発生しました。。'
SocketException: 既存の接続はリモート ホストに強制的に切断されました。
blog.fujiu.jp Visual Studio で WebException が起きた時の直し方

内部例外 1:
IOException: 転送接続からデータを読み取れません: 既存の接続はリモート ホストに強制的に切断されました。。
内部例外 2:
SocketException: 既存の接続はリモート ホストに強制的に切断されました。


TLS 1.2 を有効にしたら解決した

ネット上の多くの Web サーバーがセキュアな通信のために TLS 1.0 や TLS 1.1 をサポートしていましたが、現在は TLS 1.2 に移行し TLS 1.0 や TLS 1.1 のサポートをやめる傾向があります。
今回の WebException が起きたアプリはネット上の Web サーバーが提供する Twitter API にアクセスする際に発生したのですが、まさに Twitter API が TLS 1.1 のサポートをやめた直後でした。
Visual Studio で開発したアプリは初期状態では Web サーバーへの接続に TLS 1.2 が無効にされていることが原因でした。
そこでこのアプリを次の方法で TLS 1.2 に対応したところ解決しました。

プロジェクトのターゲットフレームワークを.NET Framework 4.5 以降に設定しておきます。
次のコードを追加します。
エラーが起きるコードの前に実行する必要があります。



試してみたけど効果がなかったこと

エラーメッセージからリモートの Web サーバーに接続できないことが原因と推測し、以下のことを確かめましたが効果ありませんでした。
  • PC や Visual Studio を再起動する
  • Web ブラウザーなどでインターネットの Web サーバーに接続できることを確かめる
  • ファイアウォールやセキュリティソフトを停止する
  • IIS Express を削除して再インストールする

Microsoft Network Monitor で Visual Studio の接続の様子を見てみましたが、そもそもサーバーに何かを送受信している様子はありませんでした。


イベントビューアーの記録を調べた結果

TLS 1.2 に対応する前にイベントビューアーの記録を確かめてみました。
スタートボタンを右クリックしてイベントビューアーをクリックし、
Windows ログ -> Applictaion
を開くと例外が発生した時刻にイベントが記録されていました。
圧縮されたコンテンツ %USERPROFILE%\AppData\Local\Temp\iisexpress\IIS Temporary Compressed Files\Clr4IntegratedAppPool のキャッシュ用に指定されたディレクトリは無効です。静的な圧縮は現在無効です。

エクスプローラーで確かめたところ、このディレクトリは存在しませんでした。
このイベントのおかげで TLS が原因であることに気がつくまで時間を要しました。



参考にしたコンテンツ

.NET Framework で TLS1.1 および 1.2 を有効化する方法 -まとめ- – Japan IE Support Team Blog
https://blogs.technet.microsoft.com/jpieblog/2018/10/11/net-framework-tls11-12-2/


関連ブログ

Visual Studio 2017 を全部ダウンロードしてからインストールする方法
古い Visual Studio をまとめてアンインストールする方法


2018年10月27日土曜日

GitHub の your dependencies may have a security vulnerability を解決する方法

How to fix security vulnerabilities

2018年10月、GitHub がセキュリティ脆弱性アラートがJavaと.NETに対応しました。
その影響で当ブログの著者に「your dependencies may have a security vulnerability」というメールが届きました。
GitHub に保存しているアプリのソースコードがセキュリティに脆弱なライブラリやモジュールに依存しているから修正するべきという内容です。
実際に修正してアラートがなくなったのでその方法をまとめました。
blog.fujiu.jp GitHub の your dependencies may have a security vulnerability を解決する方法


環境

  • Windows 10
  • Visual Studio Community 2017
  • Eclipse MARS.2
Visual Studio 2017 の初期バージョンは Git クライアントの不具合があり更新する必要がありました。


脆弱性を確認した結果

GitHub から1件の脆弱性につき1通のメールが届きます。
メールを抜粋した内容は次の通りです。

Visual Studio で作ったアプリ
Microsoft.Data.OData < 5.8.4 (oderate severity)

Eclipse で作ったアプリ
com.fasterxml.jackson.core:jackson-databind < 2.8.11.1 (high severity)
com.fasterxml.jackson.core:jackson-databind >= 2.7.0, < 2.7.9.1 (high severity)


Visual Studio で作ったアプリの修正方法

Visual Studio で作ったアプリは Microsoft.Data.OData に脆弱性がアルトのことですが、これは NuGet でインストールしたパッケージです。
修正するには当該のプロジェクトを開き、メニューの
プロジェクト -> NuGet パッケージの管理
を開きます。

脆弱性のある Microsoft.Data.OData の右側にある上向きの矢印をクリックします。

今回は依存するパッケージの変更の確認が表示されました。OK をクリックします。

すべてをコミットしてプッシュして完了です。


Eclipse で作ったアプリの修正方法

Eclipse で作ったアプリは jackson-databind が脆弱性のあるバージョンとのことですが、これは maven でインストールしたライブラリーでした。
pom.xmlは次の通りでした。

2.7.2 の部分を最新の 2.8.11 に書き換えました。
コミット・プッシュして完了です。


関連ブログ

[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
Visual Studio 2017 を全部ダウンロードしてからインストールする方法
古い Visual Studio をまとめてアンインストールする方法


2017年10月28日土曜日

Visual Studio Code で Angular の開発環境を構築する方法

How to make Visual Studio Code adapt for Angular

最近のはやりのWebアプリケーション開発ツール Angular を Visual Studio Code で利用する方法を調べてその結果をまとめました。


環境

  • Windows 10
  • Visual Studio Code 1.17.1


Node.js をインストールする

Node.js は Angular で使われるWebサーバーやツールが含まれている実行環境です。
Node.js を公式サイト https://nodejs.org/en/ からダウンロードしてインストールします。
今回は Recommended For Most Users のインストーラーをインストールしました。
blog.fujiu.jp Visual Studio Code で Angular の開発環境を構築する方法


Angular CLI をインストールする

Angular CLI はAngularを利用するためのツール集です。
Node.js に含まれる npm コマンドが必要です。
コマンドプロンプトから次のコマンドを入力します。


%USERPROFILE%\AppData\Roaming\npm にファイルがインストールされました。

Angular プロジェクトを作成する

Cドライブのルートにサブフォルダーを作り、そこに開発するプロジェクトを作成します。
コマンドプロンプトから次のコマンドを入力します。


1行目はカレントフォルダーの移動、3行目が Angular プロジェクトを作成するコマンドです。
ng は Node.js に含まれるコマンドです。


ang-app というフォルダーに "Welcome to app!!" というAngularアプリケーションのひな形が作られるので次のコマンドで起動します。


ng serve はAngularプロジェクトをWebサーバーで起動させるコマンドです。
下の画像のように Compiled successfully と表示されたら

Webブラウザーで http://localhost:4200/ を開くと次のような画面が表示されれば成功です。

コマンドプロンプトに Compiled successfully と表示されている間は"Welcome to app!!"が起動したままですが、コマンドプロンプトで Ctlr + C を入力すると停止できます。

Visual Studio Code で Angular プロジェクトを開く

コマンドプロンプトに次のコマンドを入力するとVisual Studio Code で Angular プロジェクトのフォルダーを開けます。



Angular開発するために Visual Studio Code に拡張機能をインストールする必要があると思ったのですが、デフォルトでシンタックスハイライトやコード補完が機能していました。
F12キーで「定義に移動」もできました。

ng serve を開始して app.component.ts を編集して上書き保存したら自動で再コンパイルされWebブラウザーがリロードし、結果を即座に確認できました。


結論

Visual Studio Code は Angular の開発環境としてそのまま使える
ただしHTMLを WYSIWYG でコーディングできないので、HTMLをプレビュー表示する拡張機能をインストールするかほかのエディターとの併用すると良さそうです。
今回はコマンドラインの入力にコマンドプロンプトを使いましたが、Visual Studio Code のターミナルを使うと効率が上がりそうです。


参考にしたコンテンツ

Angular JavaScript Tutorial in VS Code
Home · angular/angular-cli Wiki · GitHub


関連ブログ

Vsiaul Studio Code のターミナルを Bash に設定する方法
WindowsでUnix用GUIツールを実行する方法
Unity3D のC#スクリプトを Visual Studio Code で編集する方法

2017年8月5日土曜日

Vsiaul Studio Code のターミナルを Bash に設定する方法

How to change VSCode terminal from PowerShell to Ubuntu Bash

Visual Studio Code (以下 VSCode) のターミナルを Windows Subsystem for Linux の bash に設定する方法を試してみました。
blog.fujiu.jp Vsiaul Studio Code のコンソールを Bash に設定する方法


環境

  • Windows
  • Visaul Studio Code 1.14.2


準備1・開発者モードに設定する

Windows Subsystem for Linux を利用するには開発者モードに設定する必要があります。
コントロールパネル - 更新とセキュリティ - 開発者向け
を開いて開発者モードに設定します。


準備2・Windows Subsystem for Linux をセットアップする

Windows Subsystem for Linux は初期状態ではインストールされていません。
コントロールパネル - アプリと機能 - プログラムと機能 - Windowsの機能の有効かまたは無効化
を開いて
Windows Subsystem for Linux (Beta) にチェックを入れてOKをクリックしてWindowsを再起動するとインストールされます。

Windows Subsystem for Linux はスタートメニューに登録されません。(スタートメニューに Bash on Ubuntu on Windows が登録されることがあるようです)
コマンドプロンプトかPowerShellのコンソールから bash と入力すると利用できるようになります。


VSCodeのターミナルからbash.exeが実行できない

VSCodeのターミナルに bash.exe を設定すればターミナルが bash になると思ったのですが、実際に設定するとターミナルがフリーズしてしまいます。
bash.exeを起動するbatファイルを指定する方法も試しましたがターミナルから起動できませんした。

将来この方法で実行できるようになるかもしれませんが、今できる方法を模索しました。


PowerShellでbashを起動する

Visaul Studio Codeのターミナルは初期設定ではPowerShellが起動する設定です。
今回はPowerShellでWindows Subsystem for Linux の bash が起動するようにターミナルの設定します。

ファイル - 基本設定 - 設定
を開き、右側のユーザー設定に次の1行を追加します。


既に追加設定がある場合はカンマで区切って追加します。

これで Ctrlキーを押しながら @キーを押すとターミナルに bash が起動します。

VcXsrv を使えばGUIツールも起動できます。

bashはClangやGCCなどの広く使われているコンパイラーが利用できるメリットがあります。
VSCodeで書いたソースコードをすぐにコンパイルして実行できる環境があるとプログラミングがはかどりそうです。

2017年8月7日見出しを修正しました。


関連ブログ

Visual Studio Code のターミナルを Cygwin に設定する方法
WindowsでUnix用GUIツールを実行する方法

2017年7月22日土曜日

WindowsでUnix用GUIツールを実行する方法

How to run Unix GUI applications on Windows 10

Windows10 で動作する Windows Subsystem for Linux がX-Windowsで動作するGUIツールの実行が可能とのことなので、Unix用GUIツールの xeyes をWindowsで動作させてみました。
xeyesはマウスポインターの位置に目を向けるすだけのアプリで役に立つものではありませんが、GUIツールをソースからインストールできる環境を構築するためにインストールしてみました。
以下がその記録です。
blog.fujiu.jp WindowsにUnix用GUIアプリをインストールする方法


環境

  • Windows 10 Creators Update


開発者モードに設定する

Windows Subsystem for Linux を利用するには開発者モードに設定する必要があります。
コントロールパネル - 更新とセキュリティ - 開発者向け
を開いて開発者モードに設定します。


Windows Subsystem for Linux をセットアップする

Windows Subsystem for Linux は初期状態ではインストールされていません。
コントロールパネル - アプリと機能 - プログラムと機能 - Windowsの機能の有効かまたは無効化
を開いて
Windows Subsystem for Linux (Beta) にチェックを入れてOKをクリックしてWindowsを再起動するとインストールされます。

Windows Subsystem for Linux はスタートメニューに登録されません。(スタートメニューに Bash on Ubuntu on Windows が登録されることがあるようです)
コマンドプロンプトやPowerShellのコンソールから bash と入力すると初回のみインストールと初期設定が実行され、以降はbashが起動します。
Windows Subsystem for Linux の操作はこのbashから行います。


VcXsrv Windows X Server をインストールする

WindowsでUnix用GUIツールを動作させるために VcXsrv Windows X Server が必要です。
VcXsrv Windows X Server のインストーラーをダウンロードしてインストールします。
https://sourceforge.net/projects/vcxsrv/

インストール後、スタートメニューから VcXsrv が起動できます。
初回のみファイアウォールのアクセスの許可をします。

VcXsrvを停止する場合はタスクトレイに常駐する VcXsrv のアイコンから操作できます。


環境変数を設定する

bash を起動し次のコマンドを入力して環境変数を有効にします。

このコマンドはGUIツールをWindows X Serverに表示するためにbashを起動する毎に必要な設定です。
~/.bashrc にコマンドを追記すれば毎回入力する手間が省けます。


必要なツールをインストールする

GUIツールに必要なツールをインストールするため bash に次のコマンドを入力します。


xeyesはx11-appsに含まれているのでこれでxeyesは実行できます。
しかし、今回はLinux開発環境の構築のためソースからインストールすることを試みます。
xeyesをソースからインストールする場合は次のインストールも必要でした。



xeyes をインストールする

xeyes をソースからインストールする場合のコマンドを実行します。



インストールした xeyes を起動する

ソースからインストールしたxeyesは /usr/local/bin にインストールされます。
起動するにはbash に次のコマンドを入力します。



Windows Subsystem for Linux を使ったのはこれが初めてですがCygwinが不要になる可能性を秘めてそうです。


トラブルシューティング

bashを起動すると この機能を使用するためには開発者モードを有効にする必要があります と表示される

Windowsを開発者モードに設定してください。

xeyes と入力すると Error: Can't open display: :0 と表示され起動しない

VcXsrv を起動してから実行してください。


参考にしたコンテンツ

どう使う?Windows版Linux - 「WindowsでX」、定番GUIがWindows版Linuxで動く:ITpro
http://itpro.nikkeibp.co.jp/atcl/column/17/062700262/070400004 /


関連ブログ

[Machine Learning] 機械学習で白黒写真をカラー化する方法
bashスクリプトの変数のスコープにはまったところと対処方法

2017年3月18日土曜日

古い Visual Studio をまとめてアンインストールする方法

How to uninstall old Visual Studio at once

古い Visual Studio をまとめてアンインストールできる Microsoft/VisualStudioUninstaller がGitHubで公開されています。
https://github.com/Microsoft/VisualStudioUninstaller/releases
blog.fujiu.jp 古い Visual Studio をまとめてアンインストールする方法

アンインストールできるバージョンは 2013 / 2015 / vNext(2017のPreview版) で、Preview / RC / RTM にも対応とのことです。

古いVisual Studioを使わなければディスク容量の無駄になります。
しかしVisual Studioのアンインストーラーは複数のアプリケーションやコンポーネントごとに用意されているためどれを残しどれが不要か考えながらアンインストールする必要があります。

VisualStudioUninstallerを使って古いVisual Studioをまとめてアンインストールできるか試してみました。


環境

  • 2015以前のVisual StudioがインストールされたWindows 10


VisualStudioUninstaller をダウンロードして実行する

サイトから TotalUninstaller.zip をダウンロードし、展開します。
一つだけ exeファイル(アプリケーション)があります。

このファイルを右クリックして管理者権限として実行します。

こんな画面になったら yキー・Enterキーの順に入力します。

後は自動でアンインストールが進みます。
どうやら各アンインストーラーをサイレントモードでバッチ実行する仕組みのようです。

結果

Visual Studioと一緒にインストールされたと思われるコンポーネントがいくつか残ってました。
不要なら手動でアンインストールしましょう。

アンインストール後に不要になったレジストリは残るようです。
気になるようならCCleanerなどで消しましょう。

参考にしたコンテンツ

.NET TIPS:Visual Studio 2017のインストール前に、Visual Studio 2013/2015と2017プレビュー/RC版を完全にアンインストールするには? - @IT
http://www.atmarkit.co.jp/ait/articles/1703/13/news034.html



関連ブログ

Visual Studio 2017 を全部ダウンロードしてからインストールする方法
Visual Studio 2015 Community をISOファイルからインストールする方法
[Windows] Visual C++で簡易スクリーンセーバーを作る方法
[Visual Studio] C# のお節介な警告を消す方法
[Android] Xamarin で jar (Javaライブラリー) を実行する方法
[Android Studio] Xamarin で実行可能な jar (Javaライブラリー) の作り方
Unity3D のC#スクリプトを Visual Studio Code で編集する方法

2017年3月11日土曜日

Visual Studio 2017 を全部ダウンロードしてからインストールする方法

How to install Visual Studio 2017 offline

2017年3月、Visual Studio 2017 正式リリースされました。
過去のバージョンと異なり、ISOイメージファイルが提供されません。
複数のPCに効率よくインストールできるように、必要なファイルを全部ダウンロードしてかオフラインでインストールする方法を試してみました。

blog.fujiu.jp Visual Studio 2017 を全部ダウンロードしてからインストールする方法

環境

  • Windows 10
  • Visual Studio 2017 Community


インストーラーファイルをダウンロードする

Visual Studio Downloads からインストーラーをダウンロードします。
https://www.visualstudio.com/downloads/?utm_source=mscom&utm_campaign=msdocs

ダウンロードするタイミングでファイル名が変わるようで2回ダウンロードして2回とも異なるファイル名でした。
このブログを書いている時点でCommunityエディションをダウンロードしたら vs_community__1546027868.1488975944.exe というファイル名でした。


インストーラーをダウンロードしたフォルダーと同じパスに拡張子が .bat のファイル(例: vs2017offline.bat)を作りメモ帳などで次の内容で保存します。
(cdコマンドなどが使えればコマンドプロンプトに直接入力していいです)




.batファイルをダブルクリックすると vs2017offline というサブフォルダーにインストールに必要なファイルがダウンロードされます。
ダウンロード中はこんな画面が出ます。

容量は約24GBでダウンロードに1時間弱かかりました。
このサブフォルダーをNASやUSBドライブで共有すればほかのPCにもオフラインインストールが可能です。
サブフォルダー内の vs_community__1546027868.1488975944.exe というファイルを実行すればインストールできました。
このファイルもダウンロードするタイミングで異なるかもしれません。


参考にしたコンテンツ

Create an offline installer for Visual Studio 2017
https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio


関連ブログ

Visual Studio Community をISOファイルからインストールする方法
[Windows] Visual C++で簡易スクリーンセーバーを作る方法
[Visual Studio] C# のお節介な警告を消す方法
[Android] Xamarin で jar (Javaライブラリー) を実行する方法
[Android Studio] Xamarin で実行可能な jar (Javaライブラリー) の作り方
Unity3D のC#スクリプトを Visual Studio Code で編集する方法
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで

2017年1月28日土曜日

Unity3D のC#スクリプトを Visual Studio Code で編集する方法

How to edit C# scripts with Visual Studio Code

2016年11月、ゲームエンジン Unity3D (以下、Unityと略します) のバージョン5.5がリリースされました。
このバージョンからMacOS版とWindows版とも、スクリプトエディターとしてVisual Studio Code(以下、VS Codeと略します)が正式にサポートされました。
Visual Studio 2015に比べてインストールに必要な容量が少なく、起動が速いなどのメリットがあります。
WindowsでVS CodeをUnityのエディターとして使う方法をまとめました。


環境

  • Windows
  • Visual Studio Code 1.8.1
  • Unity3D 5.5.0f3


VS Codeに Debugger for Unity をインストールする

VS Codeの拡張機能を開き、
"unity technologies"
で検索するとDebugger for Unityが見つかるのでインストールします。
blog.fujiu.jp Unity3D のC#スクリプトを Visual Studio Code で編集する方法


.NET Core SDK をダウンロードしインストールする

.NET Core installation guide のサイトから.NET Core SDK をダウンロードしインストールします。
https://www.microsoft.com/net/core#windowscmd



UnityのプロジェクトにVS Codeエディタ拡張アセットをインポートする

UnityのAsset StoreからVSCodeエディタ拡張をインストールします。

GitHubからクローンをインポートすることもできるようです。


VSCodeエディタ拡張アセットはUnityのプロジェクトごとにインポートする必要があります。


Unityの設定を変更する

Unityエディターの
Edit - Preferences
を開いて次のように設定し、Write workspace settingsボタンをクリックします。


UnityプロジェクトのC#スクリプトをVS Codeで開く

UnityエディターのProjectウィンドウにC#スクリプトのファイルを追加します。

スクリプトファイルをダブルクリックするとVS Codeが起動します。

C#拡張機能がインストールされてない場合はインストールを勧められるのでインストールします。


エラーが出た場合

The .NET CLI tools cannot be located. .NET Core debugging will not be enabled. Make sure .NET CLI tools are installed and are on the path.
というメッセージは.Net Command Line Tools がインストールされてない場合に表示さるエラーです。
Get .NetCLI tools をクリックするとWebブラウザーで公式サイトが開くので.Net Command Line Toolsをダウンロードしてインストールしてください。


参考にしたサイト

Unity Development with VS Code
https://code.visualstudio.com/Docs/runtimes/unity


関連ブログ

Live2D を Unity3D で動作させる方法
Houdini APPRENTICE のFBXファイルの互換性を試してみました
MODO Indie のFBXの互換性を試してみました
[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
VOCALOID SDK for Unity でユニティちゃんをリアルタイムに歌わせる方法
VOCALOID SDK for Unityでユニティちゃんにvsqxを歌わせる方法

以上、参考になれば幸いです。

2016年12月3日土曜日

[Windows] Visual C++で簡易スクリーンセーバーを作る方法

How to create simple screen saver

Windowsは一定時間キーボードやマウスを操作しないとスクリーンセーバーが起動し、モニターの焼き付きを防ぐ機能があります。
スクリーンセーバーは一定時間経過しないとを起動しないので、任意のタイミングでモニターへの信号を遮断する簡易的なスクリーンセーバーを作ってみました。


環境

  • Windows 10
  • Visual Studio 2015 Community
    ※Windows XPとVisual C++ 2008 Expressで作ったものをビルドし直しただけ


Visual Studio 2015にVisual C++ インストールオプションを追加する

Visual Studio 2015 は初期設定のままではVisual C++がインストールされませんでした。
Visual C ++ 2015用の共通ツールを追加インストールしました。
blog.fujiu.jp Visual C++で簡易スクリーンセーバーを作る


Win32 コンソール アプリケーションとしてプロジェクトを作る

プロジェクトはWin32 コンソール アプリケーションとして作ります。

アプリケーション設定は初期設定のまま進めます。


処理内容

プログラムが起動したらモニターへの信号を遮断し続けます。
モニター信号の信号はSendMessage関数を使います。
0.1秒くらいマウスを動かし続けるとモニター信号の遮断を停止しアプリが終了します。
標準ライブラリーだけでできました。
Releaseビルドしてできたexeファイルへのショートカットをタスクバーにピン留めすればワンクリックで省エネできます。

SendMessage関数を使っているところだけ記載します。

EcoMoni.cpp


全ソースはGitHubにプッシュしました。
https://github.com/mtk-f/EcoMoni/tree/master/EcoMoni


関連ブログ

Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
ProTools First のwavファイルはPlaySound関数で再生できるか?
[C#] タスクトレイにバルーンチップを表示するアプリ
[ASP.NET] ポストバック処理で実行するJavaScriptを選ぶ方法
[ASP.NET] 動的に追加したイベントが動作しない
[ASP.NET] 動的に追加したラベルやテキストボックスが消える現象の対策

以上、参考になれば幸いです。