C# 入門講座
Visual Studio 2017 Visual Studio 2019 Visual Studio 2022

第10回 友達のパソコンで実行する

2022/2/20

この記事が対象とする製品・バージョン。環境が2019以前の場合はこの記事の過去の版も参考にしてください。

Visual Studio 2022 Visual Studio 2022 ◎ 対象です。
VS2019 Visual Studio 2019 ○ 対象ですが、少し異なる部分があります。過去の版も必要に応じてご覧ください。
VS2017 Visual Studio 2017 ○ 対象ですが、そこそこ異なる部分があります。過去の版も必要に応じてご覧ください。
VS2015 Visual Studio 2015 × 対象外です。過去の版を参照してください。
VS2013 Visual Studio 2013 × 対象外です。過去の版を参照してください。
VS2012 Visual Studio 2012 × 対象外です。過去の版を参照してください。
VS2010 Visual Studio 2010 × 対象外です。過去の版を参照してください。
VS2008 Visual Studio 2008 × 対象外です。過去の版を参照してください。
VS2005 Visual Studio 2005 × 対象外です。過去の版を参照してください。
VS.NET 2003 Visual Studio 2003 × 対象外です。
VS.NET 2002 Visual Studio (2002) × 対象外です。

目次

 

1.アプリケーションの公開

C#で開発したアプリケーションを友達のパソコンやスマホで実行するにはどうすればよいでしょうか?

アプリケーションの種類によって方法は変わります。

たとえば、 アプリケーションの種類が Webアプリケーション であれば、Webサーバーに配置してそのURLを友達に伝えることになります。友達はブラウザーにURLを入力するかリンクをクリックすればブラウザーであなたのアプリケーションを使うことができます。

Webサーバーも最近はクラウドが普及しており無料の環境もありますから、Webアプリケーションが作れる技術力があるのなら魅力的な選択肢です。

しかし、Webアプリケーションの作成は初心者には難しくハードルは高いです。入門講座でも扱いません。

入門講座で扱ってきた Windows フォーム アプリの場合は、ビルドしてできたexeを友達に渡すか、セットアップを作成するのが普通の方法です。

今回は Windows フォーム アプリ で作成したアプリケーションを友達のパソコンで動かす方法を説明します。

「友達のパソコンで」と書いてはいますが、仕事でお客さんのパソコンで動かしたいときや、学校のパソコンで動かしたいときなど他のパソコンで動かしたいときにも同じように実現できます。

 

 

2.必要なもの

2-1.ゴール

C# で作ったアプリケーションを友達のパソコンで実行するには、友達のパソコンにアプリケーション本体と、アプリケーションの依存関係と、.NETのランタイム/ライブラリをそろえる必要があります。

 

友達のパソコンで実行するのに必要なもの

 

2-2.アプリケーション本体

アプリケーション本体とは、C#のプログラムをビルドして生成されるもので、通常はexeやdllの拡張子を持ちます。

 

2-3.アプリケーションの依存関係

アプリケーションの依存関係とは、アプリケーション本体が利用しているモノです。わかりやすいものでは、アプリケーションが使用している画像や音楽が挙げられます。画像や音楽はアプリケーション本体であるexeやdllの中に埋め込むこともできます。初心者向けではありませんが、このあたりに説明があります。

その他には、データベースを利用するアプリケーションであればそのデータベースが必要かもしれませんし、何か外部の機能を呼び出すアプリケーションであればその外部の機能が依存関係になります。ほとんどのアプリケーションでは何かの設定ファイルを使用するのでこれも依存関係です。このように依存関係は意識的・無意識的に使用しており、それがないとアプリケーション本体だけでは動作できないというものです。

 

2-4..NETのランタイムとライブラリ

.NET のランタイムとは、C#などで.NETで作ったアプリケーションを動作させるために必要なソフトウェアです。

次の2つの条件で使用するランタイムが決定します。

Windowsフォームアプリは「デスクトップアプリ」に分類されます。

ランタイムはOS、CPUの種類(CPUアーキテクチャー)によってインストールするものが変わります。この2つも条件3,条件4としておきましょう。

  1. 条件3:友達のパソコンのOS(Windows/Linux/Mac)
  2. 条件4:友達のパソコンのCPUの種類(X64, X86, Arm64)

実際に友達のパソコンに導入するには、この2つの情報も必要です。

なお、Windows フォーム アプリはWindowsでしか動作しないのでOSはWindowsに限定されます。

 

参考に、.NET 6.0 ランタイムのダウンロードページを紹介します。

.NET 6.0 ランタイムのダウンロード (microsoft.com)

このページは 「.NET 6.0」なので、条件1(バージョン)は決まっています。

それでも、条件2~4に応じてダウンロードの選択肢が9個に分かれています。

 

Windows フォームアプリを実行したい場合は、条件2は「デスクトップアプリ」、条件3は「Windows」で固定されるので気にする必要があるのはCPUの種類だけですね。なお、2022年2月時点ではほとんどのパソコンのCPUの種類はX64です。

 

Windows 10や11だと自動的にランタイムがインストールされている場合もあるので、ランタイムがないから実行できないということはないかもしれません。

 

ライブラリとは、ランタイム自体ではないけれども、ランタイムとともに動作して何かの機能を実現する外部のプログラムです。たとえば、画像処理を行うライブラリや、ネットワークにアクセスするライブラリなど多数あります。

 

さて、少し細かい話も書いたので、なんだか大変そうだなと感じたかもしれません。確かに、自分でこれだけのものをきちんとそろえて、友達に「はい、これね。」と渡すのはなかなか大変です。

でもご心配なく。Visual Studioは友達に渡すためにこれらを集める作業を自動的にやってくれます。渡しやすいように1つのフォルダーに全部コピーしてくれるという親切機能です。Visual Studioに頼ることにしましょう。

 

3.発行

Visual Studioで友達のアプリケーションを渡すためには発行機能を使用します。

ソリューションエクスプローラーでプロジェクトを右クリックして「発行」をクリックします。

この機能の画面や設定はVisual Studioのバージョンによって結構異なります。ここではVisual Studio 2022を例に説明します。Visual Studio 2022も結構な頻度でマイナーアップデートされるので、将来のバージョンではここで説明する内容と異なる画面や手順になっているかもしれません。

はじめて「発行」をクリックすると、どういう発行を行うのか設定する画面が表示されます。

まだ入門講座でWindows フォーム アプリしか説明していませんが、C#で作れるアプリケーションにはいろいろな種類があるうえ、友達のパソコンで実行するためのやりかたもいろいろありますから、どういうアプリケーションをどういう風に他のパソコンに持っていくつもりなのか選択する必要があります。

このように、開発したアプリケーションを別の場所にもっていくことを一般的には「デプロイ」と呼びます。日本訳すると「発行」となり、Visual Studioはこの「発行」という言葉の方を採用していますが、他のツールやドキュメントでは「デプロイ」という表現の方が多数派のように感じます。

 

最初の選択肢はこれです。ここでは「フォルダー」を選んで、「次へ」をクリックしてください。

フォルダーを選択すると友達のパソコンで実行するのに必要なもの全部をVisual Studioが指定したフォルダーにコピーして集めてくれます。

他の選択肢もいろいろと使い道はあるのですが、中級以上向けなのでひとまず気にしないことにしましょう。

なお、ここにないGCPやAWSにデプロイすることももちろん可能です。

 

Visual Studio 2022では、もう1回「ClickOnce」か「フォルダー」かの選択を聞かれるので、再度「フォルダー」を選択して「次へ」をクリックしてください。

 

次に、対象のフォルダーの場所を指定しましょう。こだわりがあれば「参照」ボタンなどを押して「C:\xxxx\xxxx」のような好きなフォルダーを指定することもできます。

ここではひとまずデフォルトの設定のままで「完了」をクリックすることにします。

 

 

これで準備完了です。

このような画面になります。

この画面のターゲットの場所というところには、さきほど設定した発行先のフォルダーのパスが表示されます。あとで実際に発行を行った後にこのパスをクリックすると、発行先のフォルダーがエクスプローラーで開きます。(最初の段階ではまだフォルダーが存在していないので開けません。)

実際に発行を行うにはこの画面で「発行」ボタンをクリックします。

もし、この画面を閉じてしまった場合は、もう1度プロジェクトを右クリックして「発行」を選ぶと表示できます。

では、「発行」ボタンを押してみましょう。

発行ボタンを押すと、アプリケーションのビルドが開始されます。ビルド完了後、発行に必要なファイルが発行先のフォルダーにコピーされます。

単純なWindows フォーム アプリなら完了するまでに1分もかかりません。

出力ウィンドウに「公開」「1 正常終了」と表示されれば正常に完了です。

 

発行の画面でも、このように親切に「公開が成功しました。」と表示され、フォルダーを開くというリンクまで提供してくれます。

 

 

「フォルダーを開く」のリンクをクリックして発行先フォルダーの中がどうなったか確認してみましょう。

私はWindows フォーム アプリ のテンプレートに何もプログラムしないで発行してみました。

次のようになりました。

プログラムの内容や設定によってこのフォルダーの中身は変わります。

このフォルダーの中にあるのはアプリケーション本体とアプリケーションの依存関係です。

WinFormsApp1.dll と WinFormsApp1.exe がアプリケーションの本体で、他は依存関係です。

 

ただ、拡張子が .pdb のファイルだけはちょっと微妙で、なくてもアプリケーションは動作します。このファイルは「デバッグシンボル」という種類のファイルでアプリケーションがうまく動作しないときの調査に役立つファイルなんですが、第7回でも説明したように、あなたのパソコンのフォルダー名を埋め込まれていたりするので、不特定多数の人には配らない方が無難です。誰かに渡すときはこのファイルは削除しましょう。

 

既定の設定で発行を行うと、発行先のフォルダーには.NETのランタイムやライブラリがコピーされませんが、前述したようにほとんどのWindows環境にはこれらははじめから入っているので問題にならないことの方が多いです。

.pdbフィルだけ消して、このフォルダーをまるごと友達に渡しましょう。

そして、拡張子が .exe のファイルを実行してもらえれば、友達のパソコンであなたのプログラムが動作します。

 

4.ランタイムの用意

4-1.ランタイムの存在確認

前述したように友達のパソコンに既にランタイムが入っている可能性があるので、ランタイムについては気にしなくて良いことが多いと思います。

気軽に試せるのであれば、発行機能を使って発行したフォルダーを友達のパソコンにコピーして、アプリケーションを実行してみましょう。

Windows フォーム アプリの場合 WinFormApp1.exe のような拡張子がexeのファイルを実行するとアプリケーションが起動します。友達のパソコンが拡張子を表示する設定になっていない場合は、種類が「アプリケーション」になっているファイルとして見分けられるかもしれません。

ランタイムが存在していればこれだけで実行できます。

 

 

4-2.ランタイムがない場合

もし、友達のパソコンに必要なランタイムがない場合、アプリケーションを実行すると次のようなメッセージが表示されます。

(バージョンによってメッセージは異なる場合があります。)

私が英語版のWindowsで試してみたのでメッセージが英語になってしまっていますが、日本語版で試せば多分日本語のメッセージが表示されると思います。

メッセージを私が日本語に翻訳すると次のような文言です。

「このアプリケーションを実行するには .NET デスクトップランタイム 6.0.0 (x64) が必要です。今すぐダウンロードしますか?」

ありがたいメッセージですね。必要なバージョン(条件1)が6.0.0でやアプリの種類(条件2)がデスクトップランタイムでCPUの種類(条件4)がx64であることもはっきり書いてありますね。

Yes (はい) ボタンをクリックすると、ブラウザーが起動して次のページが表示されます。

https://dotnet.microsoft.com/en-us/download/dotnet/6.0/runtime?utm_source=getdotnetcore&utm_medium=referral

これは先ほど紹介したページの英語版です。日本語環境で実行すると多分先ほどと同じ次のページが表示されると思います。

https://dotnet.microsoft.com/ja-jp/download/dotnet/6.0/runtime

※もし、英語版のページが表示される場合はURLに含まれる「en-us」の部分を「ja-jp」に書き換えると日本語版ページを表示できます。

この中で、デスクトップ用の x64 をダウンロードしてインストールすれば、必要なランタイムが導入されるというわけです。

 

 

4-3.ランタイムを含めた発行

Windowsの場合、あまり問題にならないとは思いますが、必要であれば発行の設定を変更して.NETのランタイムやライブラリも発行先のフォルダーにコピーすることもできます。

この方法だと友達のパソコンに対応するランタイムが存在しない場合でも、対応するOSでさえあれば、あなたのプログラムを動作させることができます。(ランタイムと対応するOSはこの後で表で掲載しています。)

ただし、これをうまく設定するのは難しく初心者向けではありません。

 

ここでは簡単に操作方法を説明しておきます。

発行の設定を変更するには、発行画面で「すべての設定を表示」をクリックします。

この画面の「配置モード」で「自己完結」を選択すると、実行に必要な.NETのランタイムとライブラリがすべてダウンロードされ発行先のフォルダーにコピーされます。

ランタイムは実行するOSやCPUによって異なるため、自己完結モードの場合、ターゲットランタイム欄でOSやCPUを選択する必要があります。友達のパソコンとこの設定が一致しない場合、友達のパソコンでは動作しないランタイムをダウンロードしてしまいます。

Windows フォーム アプリはもともとWindowsでしか動作しませんが、C#の他の種類のアプリケーションはLinuxやMacやiOSなどでも動作可能なため、ターゲットランタイムにはWindows以外の選択肢も表示されます。だからと言ってここでLinuxを選択しても、Windows フォーム アプリをLinuxで動作させることはできません。

 

自己完結モードで発行を行うと発行先のフォルダーの中にさらにターゲットランタイムの名前のフォルダーが作成されます。たとえば、「win-x86」というような名前のフォルダーです。このフォルダーの中に実行するのに必要なもの一式がコピーされます。そこそこ量があり、テンプレートのままのプロジェクトでも503ファイル、141MBがコピーされました。

自己完結モードを選択するとその下に表示される「ファイルの公開オプション」で「単一のファイルを生成する」にチェックしておくと、ほとんどのファイルはexeファイルに埋め込まれてファイル数は(.pdbを含めて)7個になります。ただexeファイルが1つで128MBというボリュームになります。

 

4-4.ランタイムの手動ダウンロード

もし、友達のパソコンに手動でランタイムをインストールする場合は、下記のリンク先からダウンロードできます。

ランタイム付きで発行するよりもこちらの方がずっと楽です。

.NET 7.0 ランタイムのダウンロード (microsoft.com) ※2022年2月現在 .NET 7.0 はプレビュー版(=未完成の開発途中のもの)です。

.NET 6.0 ランタイムのダウンロード (microsoft.com)

.NET 5.0 ランタイムのダウンロード (microsoft.com)

.NET Core 3.1 ランタイムのダウンロード (microsoft.com)

 

全バージョン詳細

.NET ダウンロード (Linux、macOS、Windows) (microsoft.com)

この全バージョン詳細は一般人にはかなりわかりにくいのです。すが、たとえば、「.NET 6.0」のリンクをクリックすると、やけに細かいリンクがいろいろあるページにジャンプします。

この中で 「SDK」というカテゴリーの「インストーラー」をダウンロードするのが確実です。

 

4-5.ランタイムのバージョン

ところで、プログラマーであるあなたはどのバージョンのランタイムを使用して開発するか選べる立場ですから、適切なバージョンを選択しておくようにしましょう。

結論からいうと、2023年10月までは 「.NET 6.0」を選択するのが最良です。

 

まず、大きく分けて、.NET Framework と .NET Core の2種類のランタイムがあります。

.NET Framework は前述したように2019年のリリースが最後なので、今(2022年2月現在)となっては古くなっており今後はまず使わないでしょう。.NET Frameworkは選択しないように気を付けてください。最後のバージョンである.NET Framework 4.8はまだまだサポートはされるので、動かないということはないと思いますが、使用するメリットはありません。

.NET Core は、大きく分けると2022年2月現在で次の種類のものがあります。

ランタイム サポート終了  Windows macOS Linux
(参考欄参照)
7
(SP1)
8.1 10 11
.NET Core 1.0 既に終了しています。 ○ ○ ○   10.11(El Capitan) 以上 ○
.NET Core 1.1 既に終了しています。 ○ ○ ○   10.11(El Capitan) ○
.NET Core 2.0 既に終了しています。 ○ ○ ○   10.12(Sierra) 以上 ○
.NET Core 2.2 既に終了しています。 ○ ○ ○   10.12(Sierra) 以上 ○
.NET Core 3.0 既に終了しています。 ○ ○ ○   10.13(High Sierra) 以上 ○
.NET Core 3.1 2022年12月3日 ○ ○ ○ ○ 10.15(Catalina) 以上 ○
.NET 5.0 2022年5月8日 ○ ○ ○ ○ 10.15(Catalina) 以上 ○
.NET 6.0 2024年11月8日 ○ ○ ○ ○ 10.15(Catalina) 以上 ○

この表は古いものが上になっています。Windowsの○は動作するものです。macOSは動作する最低のバージョンを記載しています(最高のバージョンは記載していません)。Linuxは種類がいろいろあるので、別途下記参考のリンク先をご覧ください。

.NET 5.0 以降は、名称に「Core」が付いていません。バージョン4はスキップされたので存在しません。マイクロソフトは毎年新しいバージョンをリリースする計画なので、2022年 .NET 7.0、2023年に .NET 8.0、…とリリースされる予定です。

.NET 5.0以降は偶数のバージョンはサポート期間が少し長く「LTS」(Long Term Support)と呼ばれます。

この表を見るとわかるように現在(2022年2月時点)サポートされている .NET Core 3.1 以降のランタイムはどれもWindows 7 ~ Windows 11 で動作するのでまず困ることはないでしょう。

ということなので、特に事情がなければ最新のLTSである .NET 6.0 を選択するのがほとんどの場合正解ということになります。

2022年11月に「.NET 7.0」がリリースされる予定ですが、これがリリースされてもサポート期間は 6.0 の方が長いので引き続き「6.0」が最良です。2023年に「.NET 8.0」が登場したら最良は 8.0 に変わります。

 

 

5.Setup.exe を作成する

市販のソフトウェアは Setup.exe や Setup.msi のような名前のインストーラーが提供されていて、これを実行することでインストールができるというものが多くあります。

あなたが作ったアプリケーションを setup.exe を使ってインストールできるようにすることも可能です。

インストールする側(=友達)は Setup.exe があれば、実行して「次へ」「次へ」とボタンを押していく程度で済みますから楽ができます。

…が、Setup.exeを作る側(=あなた)は結構面倒なので、かなりモチベーションがある人向けの機能です。おすすめではありません。もし私の後輩から「これ使ってみようと思うんですけど」と聞かれたら「やめとけ」と言います。

 

ここでは簡単に始め方だけ説明するので、興味がある方は掘り下げてみてください。

この記事の以前のバージョンではもう少し細かく説明していました。

 

Visual Studioでインストーラーを作成するには「セットアッププロジェクト」というものを使用します。

セットアッププロジェクトは初期状態では使用できないのでまずセットアッププロジェクトを使えるようにVisual Studioを設定します。

Visual Studioのバージョンによってはセットアッププロジェクトは使用できません。Visual Studio 2015以降ではOKなようです。

 

Visual Studioでセットアッププロジェクトを使えるようにするには、 まず、Visual Studioのメニューの[拡張機能]から拡張機能の管理をクリックします。

※Visual Studio 2017以前の場合は[ツール]メニューの拡張機能と更新プログラムです。

 

そして、オンラインをクリックし、右上の検索窓に「Installer」と入力してEnterをクリックします。Microsoft Visual Studio Installer Projectが検索されるのでダウンロード(Download)をクリックします。

※Visual Studio 2015ではMicrosoft Visual Studio 2015 Installer Projectと表示されるようです。

この後、指示に従ってこの拡張機能をインストールをします。一度Visual Studioを閉じるとインストールが始まります。

途中表示されるこのダイアログはわかりにくいのですが、「Modify」をクリックするとライセンスに同意したことになり先に進めます。

これでインストールが終了すればセットアッププロジェクトが使えるようになります。

私の環境では5分くらい時間がかかりました。

 

インストール完了後、Visual Studio を起動すると、新しいプロジェクトを作成するときにプロジェクトテンプレートで「Setup Project」が選択できるようになっています。これを利用してインストーラーを作成できます。

 

次の回では、入門講座の仕上げとして実際に機能するアプリケーションを作ってみます。

→ C#入門講座 第11回 卒業制作