nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Visual Studio 2019のインストーラーのダウンロードURLを教えてもらった

それぞれ以下からダウンロードできます。

Undocumentな内容だそうなので、変わるかもしれませんがこちらの短縮URLから最新(に近い)インストーラーが落とせます。最新のリリース直後は違ったりするかもしれませんが、インストーラーに自動アップデート機能が付いているので、少々違いがあっても問題ないでしょう。

またURLてきにvs/16のところを修正すると、VS2020がでても利用できそうです。

PowerShellから次のようにしてダウンロードして、こっちのインストーラーオプションを利用するとVSのインストールをスクリプトから実行できるようになります。

Invoke-WebRequest -UseBasicParsing -Uri http://aka.ms/vs/16/release/vs_community.exe -OutFile vs_Community.exe

PowerShellのダウンロード速度を改善する

2022.11.12訂正

最近はここにある方法ではなく、もっぱらStart-BitsTransferを利用しています。

Start-BitsTransfer -Source https://aka.ms/ssmsfullsetup -Destination SSMS-Setup-JPN.exe

みたいな感じですね。高速かつ進捗表示があるので気に入っています。

2020.03.15 9:39訂正

👇進捗が表示されて、且つ、ダウンロード速度が改善される方法を教えていただいたので修正。

PowerShellで大きなファイルをダウンロードしようとした場合、ブラウザなどからダウンロードする場合と比較して、非常に遅いことがあります。

これはダウンロード中に進捗をバイト単位でコンソールに表示しているからで、進捗表示を抑制することで大幅に速度を改善することができます。

進捗を非表示にしてもよいのですが、-UseBasicParsingオプションを利用すると進捗が表示されつつ、高速にダウンロードできるようです。

Invoke-WebRequest -UseBasicParsing -Uri https://aka.ms/ssmsfullsetup -OutFile SSMS-Setup-JPN.exe

以下は別解ですが、進捗表示されないので、あまりお勧めではない。

続きを読む

Azure DevOpsのArtifactsでリリース物を管理する

Azure DevOpsにはNuGetやnpm、Mavenなどのパッケージマネージャーのプライベート用のマネージドサービスとしてArtifactsが提供されています。

Arfifactsでは上記の一般的なパッケージマネージャー以外にも、任意のファイルセット(Universal packages)を管理することが可能です。WPFで作成したWindowsアプリケーションや、AndroidやiOSのリリースモジュールなどもバージョン管理することが可能です。

ここでは、Hello, Worldコンソールアプリケーションを作成し、Universal packagesに公開・ダウンロードする方法を記載します。

続きを読む

Windows TerminalをExplorerのアドレスバーからカレントディレクトリで開く

Explorerのアドレスバーに「wt」と入力するとWindows Terminalを起動できますが、起動時のカレントパスがアドレスバーのパスになってくれない問題の解決方法です。

ただどうも過渡期の問題で、2020年1月7日時点はこの対処方法で対応できますが、将来的にはスマートに解決されるかも?

Windows Terminal: Open terminal in current folder via single command · Issue #620 · microsoft/terminal · GitHub

設定方法

Windows TerminalのSettingsを開きます。

f:id:nuitsjp:20200107055736p:plain

jsonファイルが開かれるため、以下のように各プロファイルでstartingDirectoryを追加します。

{
  "$schema": "https://aka.ms/terminal-profiles-schema",

  "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",

  "profiles": [
    {
      "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
      "hidden": false,
      "name": "PowerShell Core",
      "startingDirectory": ".",
      "source": "Windows.Terminal.PowershellCore"
    },

必要なすべてのプロファイルに追加しましょう。

以上です。

WPFオブジェクトのライフサイクル

アプリケーションの開始から終了までのイベントの発生順を整理しました。

クラス イベント 補足
Application コンストラクタ
Application Startup
Application Navigating
MainWindow コンストラクタ
MainWindowViewModel コンストラクタ
MainWindow DataContextChanged
MainWindow Initialized
App Activated
MainWindow Loaded
MainWindow Activated ActivatedとLoadedに注意が必要。WindowのフォーカスのON/OFFでActivatedとDeactivatedイベントが発生するが、LoadedはWindowオブジェクト生成初回のみ発生する。
MainWindow Closing
MainWindow Deactivated
App Deactivated
MainWindow Closed
App Exit

ViewModelに関しては、どう設定するかによって大きく変わるので注意が必要です。ここでは以下のようにXAMLに記述しています。

<Window x:Class="Kamishibai.Wpf.Demo.MainWindow"
        ...>
    <Window.DataContext>
        <local:MainWindowViewModel/>
    </Window.DataContext>

DIコンテナからロードする場合も、代替同様になるでしょう。DIコンテナによってやや異なる可能性はありますが。