Win10 1607(Anniversary Update)とD&D

Technet blogsにこんな記事が掲載されていた。

「資格情報ダイアログが表示されると、ドラッグが開始できなくなる問題について」
https://blogs.technet.microsoft.com/askcorejp/2016/09/14/cannot-drag-on-an-application-with-windows-10-anniversary-update/

 

この記事によると、Anniversary Update を当てた Windows 10、つまり Win10 Ver1607 において、資格情報ダイアログが表示されるようなことがあると、そのプロセスではドラッグが開始できなくなるそうだ。

手元で実験してみると、確かに、.NET の DoDragDrop メソッドを呼んでも何も起きなくなる
自前で MouseDown から MouseMove、MouseUp とドラッグ&ドロップを実装しているのであれば影響しないのかもしれないが、DoDragDrop メソッドを使っていればこの不具合に遭遇しうる。
そして、現状の回避策はプロセスの再起動しかない。

もっとも、資格情報が表示されるケースとなると、ユーザーが指定した任意のパスにアクセスするロジックを持つか、アプリが表示したコモンダイアログでユーザーがそういったパスを入力した時なので、発生現場は限られるのかもしれない。

(ファイラー機能を持つアプリは死亡率が上がりますが…)

Skype for Business(SfB) Web Appで「オーディオデバイスエラー」となって音が聞こえない場合

Skype for BusinessのWeb Appの会議に招待されるなどしても、「オーディオデバイスエラー」となって音が聞こえないことがあります。

このときは、マイクなどの録音(入力)デバイスが1つ以上あるかを確認してみましょう。
ヘッドホン・スピーカーなどの再生デバイスだけしか存在しない場合は、音を聞くこともできないようです。(2016/08/01現在)
入力デバイスがあっても接続されていないことでエラーになっているかもしれないので、もし、何もつながっていない場合は何かマイクをつないでみて改善するか試してみましょう。

Visual Studio 2015でTeam Explorer for Microsoft Visual Studio 2015のインストール中に致命的なエラーが発生するケース

前からの事例ですが、備忘として残しておきます。

発生する事象

Visual Studio 2015 のインストールにおいて、以下のようなエラーが表示されることがあります。

  • Team Explorer for Microsoft Visual Studio 2015で「インストール中に致命的なエラーが発生しました。
  • Microsoft NuGet – Visual Studio 2015 などのいくつかのパッケージでで「パッケージの実行は失敗しました。」

私自身も職場で遭遇して困りました。再度インストーラーを立ち上げても同様のエラーで進まないためです。

 

対策

コマンドライン引数/uninstallを指定して実行し、アンインストール処理を実行する。
それからインストールをやり直せばうまくいきました。
MSDN フォーラムでの成功事例

 

vs_professional.exeやvs_professional_JPN.exeなど、Webインストーラーの起動時にこれを指定すればOKです。メディアからでも同様にvs_professional.exeがあるはずなので、それに/uninstall引数をつけてやればOKです。Community、Express、Enterpriseはファイル名違いますので、それに合わせてください。

 

手順例

コマンドライン引数を指定する方法がわからない方は以下を参考にしてみてください。

  1. vs_community.exeなど、対象のexeをShiftキーを押しながら右クリックし、「パスのコピー」を選ぶ。
    image
  2. Windowsキーを押しながらRキーを押して、名前を指定して実行を開く。
  3. Ctrlキーを押しながらVキーを押して貼り付けて、半角スペースを空けて /uninstall と打ち込む。
    image
  4. Enterキーを押す。

これでコマンドライン引数をつけて実行となります。

Microsoft ダウンロードセンターの一部の URL が “Windows 10 のダウンロード” にリダイレクトされる

一時的な現象かもしれませんが、9 月下旬から 10/3 時点でも続いているようなので情報共有です。
たとえば、「DirectX エンド ユーザー ランタイム Web インストーラ」を以下の URL からダウンロードしようとすると、リダイレクトされてしまい、ダウンロードできません。

http://www.microsoft.com/ja-jp/download/details.aspx?id=35

Microsoft Community のスレッド によると、URL の末尾に & をつければ回避できるようです。

http://www.microsoft.com/ja-jp/download/details.aspx?id=35&

お急ぎで必要な方はこれでしのぎましょう。

.NET Framework 4.6 の RyuJIT の不具合がいくつか修正されてリリースされている

先日、「.NET Framework 4.6環境でx64アプリケーションが正しく動作しないことがある」として記事にした RyuJIT ですが、2015/08/12 公開のセキュリティ更新プログラムとして一部の不具合が修正されたそうです。

 

マイクロソフト セキュリティ情報 MS15-092 – 重要
.NET Framework の脆弱性により、特権が昇格される (3086251)
https://technet.microsoft.com/library/security/ms15-092.aspx

MSDN Blog に挙がっていた不具合 は直されたみたいですが、まだ .NET 4.6 環境で実行すると動きが変わるような不具合(GitHub に登録されている不具合一例)はリリースされていません。

アプリケーションによっては引き続き正しく動作しないケースがあるということは認識しておいた方が良いでしょう。(開発者の方、社内の IT 管理の方など)

Visual Studio 2015 のインストーラーはオンラインで最新の情報を取得している

気づいている方や知っている方もおられるかもしれませんが、Visual Studio 2015 のインストーラーはオンラインでコンポーネントの追加・更新の情報を取得しているようです。
その判断根拠の1つとしては、Visual Studio 2015 リリース時にはなかった、Windows 10 向けの開発ツールが候補に出てくるからです。

なお、そのツールがリリースされる前に Visual Studio 2015 をインストールしていた環境で、プログラムのアンインストールから「変更」を選ぶと以下のように、新着コンポーネントとして表示されます。

image

 

逆にいえば、オフライン環境でディスク、あるいはディスクイメージからインストールしようとすると後付けで足されたコンポーネントをインストールできない。
(この場合は、Web インストーラーで /layout オプションを使うとか工夫することになるのかなぁ。試せていませんが)

.NET Framework 4.6環境でx64アプリケーションが正しく動作しないことがある

概要

.NET Framework 4.6を導入した環境、あるいは.NET Framework 4.6が標準でインストールされているWindows 10において、.NET Framework 4 ~ 4.5.2までを対象としたx64アプリケーション、.NET Framework 4.6を対象としたx64アプリケーションは期待通りに動作しないことがあります。

原因

.NET Framework 4.6を導入すると.NET Framework 4系のx64ビルドしたアプリケーションは新しいRyuJITが使用されるようになります。
しかし、このRyuJITにはネイティブコード生成の不具合、最適化の不具合がいくつか存在しており、アプリケーションが強制終了する、機能が正しく動かないといったアプリケーションの不具合を生じさせるリスクがあります。

この現象は.NET Framework 4 ~ 4.5.2までを対象にリリースした既存アプリケーションであっても、実行環境に.NET Framework 4.6を導入するか、Windows 10に既存アプリケーションをインストールすることで不具合が起きる可能性がある点、他人事とは言えない事情があります。

(Windows 10はWindows 7/8.1から無償アップグレードできるの気づかぬうちに動かなくなるとか、Visual Studio 2015インストールで勝手に入ってしまうとか)

事例情報

以下のMSDNの.NET BlogでRyuJIT最適化に関する不具合について言及されています。

RyuJIT Bug Advisory in the .NET Framework 4.6

このほか、最適化を抑制してもunsafeコードで正しくないメモリ参照を引き起こす不具合が存在しているようです。(業務的に知り得たことなので細かいことは割愛します)

対象外

以下のアプリケーションはこの問題にあたりません。

  • .NET Framework 3.5 SP1 (3.5.1) およびそれ以前を対象とするアプリケーション
  • x86指定でビルドしているアプリケーション
  • .NET Frameworkを使用していないアプリケーション

回避策

運用環境が特定少数、制御可能な範囲であれば.NET Framework 4.6をインストールしないことです。

ただ、不特定多数の市場に向けたアプリケーションの場合はそういった制御ができませんので、RyuJITを無効化することで回避することを考えます。
詳しいことはgithubのページを参照していただきたいですが、おおよそ以下の選択肢があることになります。

  1. app.configに書く。(〇〇.exeであれば、〇〇.exe.configができることになる)
    runtimeセクションに<useLegacyJit enabled="1" />を書き加える。
  2. 環境変数COMPLUS_useLegacyJitに1を設定する
  3. レジストリ(SOFTWARE\Microsoft\.NETFramework)にuseLegacyJitというDWORDの値を作り、1と書き込む。
    HKEY_LOCAL_MACHINEか、HKEY_CURRENT_USERのいずれかでよい。

これから新規に配布する、あるいはアップデートをリリースする予定のアプリケーションであれば、app.config路線が良いでしょう。これであれば、他のアプリケーションに影響を与えません。
次点として、アップデート予定がなく、エンドユーザーのフォローが必要となる場合は、HKEY_CURRENT_USERのレジストリに書くようなregファイルを作った方がユーザーサポートという観点ではやりやすいかもしれません。

回避策の有効性を確認する方法

デバッグ実行していただいて、読み込まれたDLLの一覧をVisual Studioやプロセスエクスプローラーなどで確認してください。
通常はclrjit.dllが読み込まれますが、上記の回避策を打つとcompatjit.dllが読み込まれるようになります。

Visual Studio 2015 世代の Express や Community

使用条件の都合で Express を使わないといけない場合、2015 でも Express は引き続きリリースされています。
ダウンロードは Visual Studio の Web サイトから

上部のリンクから、ダウンロード、トップダウンロード、すべてのダウンロードとたどってください。

image

次のページの Visual Studio 2015 のリンクをクリックするとエディションの選択リンクが現れますので、お好きな Express、あるいは Community のエディションを選んでください。

image

「オフラインでインストールする方法」というリンクはありますが、「製品の登録」は Visual Studio 上で「Microsoft アカウント」によるサインインが必要。
2013 からと同じで、オフライン環境では利用できないと考えた方がよさそうです。

image

※オフライン環境での試験のため、日付を1ヶ月先に設定した状態でのスクリーンショット。

オフラインで利用できた、2012 以前の Express の登録キーの発行も終了しつつありますし、オフライン環境で経費削減目的の無償利用は今後できなくなっていくと考えた方が良いでしょう。
どうしても、オフライン環境で Visual Studio が必要なのであれば、このような制約のない、Professional 以上を買うべき時が来ていると言えるでしょう。

Visual Studio 2015 (VS2015) の「標準」には C++ が含まれていない

先週末にリリースされた Visual Studio 2015 ですが、デフォルトのインストールオプションの「標準」には C# と VB.NET が中心となっており、C++ がインストールされない設定のようです。

image

戦略的にわからなくはないのですが、C++ が必要な方は最初からカスタムインストールを選びましょう。

image

モバイル開発(iOS, Android)もされる方は、もう少し下の方に選択肢があります。

image

なお、標準でインストールしてしまった場合、Visual C++ のプロジェクトを作ろうとしても、機能のインストールという選択肢が出てくるわけになります。

image

Visual Studio 2005/2008/2010/2012 Express の登録キーが取得できなくなった?

[2015/08/19追記] 2010 と 2012 の登録キー発行が再開したようです。→参照
[2017/11/09追記] 2017に関する記載を更新しました。

以前から Visual Studio(Visual Basic, Visual C#, Visual C++, Visual Web Developer) Express の 2005/2008 あたりは登録キーが取得できないという話が MSDN フォーラムに挙がっていましたが、最近は 2012 までのバージョンにおいて同様に取得できなくなっているようです。

具体的には、登録キーをオンラインで取得するためのボタンやハイパーリンクをクリックすると、Microsoft のホームページにたどり着き、登録キーを取得する流れが途切れています。
2010 で IE の開発者ツールで情報を見る限り、リダイレクトの過程で 404 エラーページに飛ぼうとして、さらに Microsoft のトップページにリダイレクトされているので、ページが削除されている疑いが濃厚です。
(あくまで、現時点(2015/07/04)の振る舞いを述べていますので、状況が変わる可能性はあります)

※MSDN フォーラムにおいて、取得できなくなっている事象について告知されています。

このように登録キーが取得できなくなっているので、それぞれの対処は以下のようになります。

バージョン 対処方法
2005 オフラインインストール版を利用する
Internet Archive のキャッシュ からたどれる)
2008 オフラインインストール版を利用する
http://go.microsoft.com/?LinkId=9348306
2010 方法なし
新しいバージョンへ移行することを検討する

[2015/08/19追記]
システムが復旧したことがMSDNフォーラムにて告知されている。
2012 方法なし
新しいバージョンへ移行することを検討する

[2015/08/19追記]
システムが復旧したことがMSDNフォーラムにて告知されている。
2013/2015 登録キー方式ではなく、Microsoftアカウントでのサインインが必要。
(オフラインでは登録不可)
2017 Expressは廃止されました。
個人開発者など、Communityの条件を満たす人はそちらを、企業など条件を満たさない方は有償製品を買うしかありません。
[2017/11/09追記]
for Windows Desktopのみですがリリースされています。ただし、これが最後のリリースなのでCommunityの条件を満たさない方は「無料で便利」と使い続けるのではなく、将来的な計画も立てていく必要があります。

 

2005 や 2008 はオフラインインストール版で回避できるのですが、2010 からはオフラインインストール版でも登録キーが必要になっているので回避できません。
このため、現時点では 最新バージョン の Express、使用条件を満たすなら Community Edition に移行することが必要になります。
(Community Edition では企業ユースでは使えないことが多いはずですので、使用条件に注意

Express のどれを選べば良いかわからない場合

以前とは違い、言語別ではなく、目的別の構成になっています。

デスクトップアプリ開発 Express for Windows Desktop
Web アプリ開発 Express for Web
Windows ストアアプリ開発 Express for Windows

どうしても特定のバージョンが必要な場合

企業ユースなど、どうしても、過去バージョンの Visual Studio で開発することが必要な方は、Visual Studio + MSDN を購入すれば、過去バージョンの Visual Studio もダウンロードすることができるようになりますので、この機会にご検討いただいた方が良いかもしれません。

2013 からはオフライン環境では使えません

2013 の Express からは「Microsoft アカウントでサインインできる環境」が必要 となっています。
つまり、オフラインインストールはサポートされていないと考えられます。
US Forum の参考スレッド

Visual Studio がどうしてもオフライン環境で必要な場合は、有償製品を買っていただくしかなさそうです。

(もし、ビジネスとしてそういった要求が生じているのであれば、今回の旧バージョンの打ち切りという事情を考えて、「開発環境はタダで手に入る」と思わず、きちんと予算化する(費用計上する)しかないと思います、現場によっては難しいかもしれませんが…)

2017 からは Express が廃止されています

2015 の時点で「Community があるから Express を出さない」という噂がありましたが、2017 から正式に Express が廃止となりました。
[2017/11/09追記] 遅れて for Windows Desktopのみリリースされています。ただし、2017が最終バージョンであることが明言されましたので、Community の条件を満たさない環境の方は Express がなくなるものとして計画を立てていくことが必要です。

個人開発者など、Community の利用条件を満たす方はそちらを使いましょう。
企業など、使用条件を満たさない方は費用をかけて Professional 以上を買うか、古い環境を使い続けるか、別のソフトウェアに移行するかの決断の時です。
(古い環境はいずれサポート終了日を迎えます。そのときまでには買うか、別のソフトウェアに移行するか考えましょう)