FC2ブログ
Visual Studio 2017 でC#7.0 の機能を使う
題目が正しいのかわからんなー。
あと、最新版のパッチが当たって場合とか。

また、新規に作ったプロジェクトだと起きない可能性ありなので、間違っているところがいっぱいあるかも。

前提として、元のプロジェクトはVisual Studio 2015 で作られたもの。
なので下記のようなパッケージは入っていない。

・Microsoft.Net.Compilers
 これがコンパイラ本体を内包しているパッケージ。そしてバージョンが上がるごとにコンパイラも進化している。
 プロジェクトファイルに一部細工がされ内包されているコンパイラを使うようになるっぽい。

・Microsoft.CodeDom.Providers.DotNetCompilerPlatform
 正確には理解していないが、Razor 側の解析とサーバーサイドでのコンパイルに使っているっポイ。View は事前コンパイルもできるけど、実行時コンパイルが標準だと思う。
 問題は、このパッケージにもコンパイラが内包されていること。クライアントサイドのビルドは上記の Microsoft.Net.Compilers で行われるが、サーバーサイド(View)は、クライアントサイドと同じものじゃない。このパッケージに内包されているコンパイラになる。
なので、微妙にバージョン違いが発生する。

で、この二つのパッケージが入っていれば新機能は使えるようになる。
だけど、Tuple の機能は使えない。なので次のパッケージを入れる。

・System.Tuple
 これを入れてもRazor 側はエラーになる。ちょっと謎

とりあえずこれで最新のC#7.3 は使えるようになる。

スポンサーサイト
Windows 2008 R2にリモートデスクトップ接続で失敗したら
ローカルセキュリティ機関にアクセスできません

とか言われたよ('A`)
サーバー側のユーザーのパスワードの有効期限は無期限にしてあるのでログインできるはずなんだけど失敗する。
因みに環境は、クライアントはWindows10で、サーバーはWindows2008R2。
パッチはほとんど当たっているので2019/1/16では最新のはず

で、仕方ないので調べたらこんなの見つけた。
https://support.microsoft.com/ja-jp/help/2493594/rdp-connection-to-remote-desktop-server-running-windows-server-2008-r2

対処方法は
管理ツール -> リモートデスクトップサービス -> リモートデスクトプセッションホストの構成をクリック
接続一覧にあるRDP-Tcp (デフォルトはこれのはず)をダブルクリック
セキュリティ層のリストボックスからRDPセキュリティ層を選択する

これでうまく行く。

これってクライアント側のユーザーのパスワードの有効期限とか関係あるのかなぁ。
ちょっと前にパスワード変えろよって警告が出てきた覚えが。
でも、サーバーに接続する際のユーザーはWindows10にログインするユーザーとは違うしな。
よくわからん。教えてエロい人('A`)
Visual Studio 2019 のプレビュー版を触ってるんだけど
2017 のころはSlowCheetah とか ConfigurationTransform 等の拡張機能で、構成毎 *.config の置き換えをビルド時にやってもらってたんだけど、2019 からは標準になったっぽい。
拡張機能にそれっぽいのがないなーと思ったら、勝手に書き換わっててびっくり('A`)y~~~

なんで最初からはいってないだと思ったくらいなので助かるけど、書き換え後のプレビューの機能が欲しいところ。未調査なのでどっかにあるかもしれんがな('A`)y~~~

Classic ASP の環境でリクエストを完全にマルチスレッド化させる方法
このタイトルが適切かはわからないが適当に('A`)y~~~
既にClassicASPでシステムを構築していた場合の話ね('A`)y~~
そんな奴はもういないと思うがな('A`)y~

たぶん、IISをインストールしたデフォルトだとMTAを使わない設定になっているはず。
なので最初にサーバーの設定を変更する。
IISマネージャを開いて、ASP -> COM+プロパティ -> MATで実行する を true にする。

次にaspで連想配列を使うためのクラスを変更する。
Server.CreateObject("Scripting.Dictionary") STA only 
Server.CreateObject("System.Collections.Hashtable") BOTH

たぶん、上記の変更により動かない箇所が出てくるので直す。
以上。

IISサーバーを再起動すればリクエストがマルチスレッドで処理されるようになる。

詳しいことはCOM の詳しい人に教えてもらうのが一番
ttps://www.kekyo.net/category/com

Web Deploy が失敗する
たぶん古いVisual Studio とかをアンインストールしたからなのだと思うのだが
Web Deploy が失敗する。
下記のようなエラーがでるのよ('A`)

--
Web Deploy タスクに失敗しました。(リモート エージェント URL 'https://host/msdeploy.axd?site=site-name' に対する要求を完了できませんでした。)

リモート エージェント URL 'https://host/msdeploy.axd?site=site-name' に対する要求を完了できませんでした。
要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした
--

これが発生する環境は、
サーバーが Windows2008R2 
クライアントがWindows10 + Visual Studio 2017 Ver 15.9.1

どっちのOSもほぼ更新パッチは当たっている

いろいろと調査したら下記の方法で対処できた。

Visual Studio 2017 起動し、デプロイしたいプロジェクトがあるソリューションを開く。
次にメニューのツール -> Nuget パッケージ マネージャ -> Nuget パッケージ マネージャコンソールを開く。

下記のコマンドを実行する
# [System.Net.ServicePointManager]::SecurityProtocol 

Ssl3, Tls 
と表示されればOK。されなければ下記のコマンドを実行する

# [System.Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Ssl3

ただし、VSを起動しなおすたびに行う必要があるので面倒。

Web Deploy はpowershell 経由で通信を行っていると思う。設定を変えたら動いたし。。。
んで、デプロイ先のIISサーバーとのセキュアな通信を確立するための
プロトコルをクライアントがTls1.2しか使用しないよっていってるから
IISサーバーとの通信ができないのだと思う。

IISサーバーに入っているWeb Deploy ツールのバージョンにも依存するかも?
クライアントは3.6 で、サーバーは3.5なのでこの違いはあるかもしれない。
この辺は調査が必要かも('A`)

TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ