nuits.jp blog

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

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コンテナによってやや異なる可能性はありますが。

Visual Studio 2019 Preview 16.4.0 Preview 2.0で.NET Core 3.0が削除される問題の対処方法

まだ未確認ですが、Visual Studio 2019 Previewの16.4.0 Preview 2.0を入れると、.NET Core 3.0が削除されるようです。

RuntimeだけなのかSDKもなのか、詳細は不明です。

これは明らかな不具合で解消する予定だそうです。

今は手動で改めて再インストールすると治るそうです。

手動ダウンロードはこちら。

dotnet.microsoft.com

Visual StudioでNuGetパッケージマネージャーコンソールが開けなくなった場合の対処方法

何もしてないのにVisual Studioのパッケージマネージャーコンソールが壊れました。(ちかって怪しい操作した記憶はありません)

次のようなエラーがでます。

f:id:nuitsjp:20191013194119p:plain

拡張型データ ファイル 、C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\PROFESSIONAL\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\NUGET\Modules\NuGet\NuGet.Types.ps1xml: 次の検証例外のため、ファイルがスキップされました: ソフトウェアの制限のポリシー (グループ ポリシーを使用して作成されたポリシーなど) によって操作がブロックされているため、ファイル C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\PROFESSIONAL\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\NUGET\Modules\NuGet\NuGet.Types.ps1xml は読み込めません。。 の読み込み中に次のエラーが発生しました。

探すとMSの証明書が信頼できない証明元として登録されているからだという情報を見つけました。

github.com

なのでIEのインターネットオプションから削除します。

f:id:nuitsjp:20191013194254p:plain

注意すべきは「certlm.msc」からではないということです。