C#2010アプリケーションを作成しましたが、ユーザーアプリケーションにインストールすると、完全なドットネットフレームワークが要求されます。ユーザーマシンに完全なドットネットフレームワークをインストールする代わりに、必要なdllファイルのみをアプリケーションに配置できる場合は可能ですか?
3 に答える
いいえ、できません
.NET Frameworkは、ターゲットコンピューターにコピーするための単なるアセンブリではありません。これは、実行可能ファイルがロードされたときにOSと対話する、より複雑なインフラストラクチャであり、IL命令が含まれている場合は、実行するためにちょうど間に合うようにコンパイルします。したがって、.NET Frameworkのセットアップなしで動作させるための非チャンクは、別の手順で実行するか、前提条件として指定された適切なフレームワークバージョンを使用してアプリのセットアップを作成することによって実行できます。フレームワークの概要はここにありますが、ネットでは他にも多くのフレームワークが利用可能です。それを読んで、必要な機能だけではない理由を理解する必要があります。
.NETFrameworkクライアントプロファイルをターゲットにすることを選択できます。これにより、.NETファイルのダウンロードサイズが減少します。件名の詳細については、次のリンクを参照してください:http: //msdn.microsoft.com/en-us/library/cc656912.aspx#targeting_the_net_framework_client_profile
いいえ、これは不可能です。.NET Frameworkを対象とするアプリケーションをインストールして実行するには、ユーザーは自分のコンピューターに適切なバージョンの.NETFrameworkをインストールする必要があります。
作業を簡単にしたい場合は、.NETFrameworkがアプリと一緒に自動的にインストールされるようにするセットアッププログラムを使用してアプリケーションを配布する必要があります。ユーザーが.NETFrameworkを自分でダウンロードしてインストールする必要がある理由はありません。Visual Studioから直接セットアッププログラムを作成することもできるので、セットアッププログラムを使用しない理由はありません。また、依存関係とバージョン管理の競合の管理がはるかに簡単になります。
依存関係のサイズが本当に心配で、.NET 4.0をターゲットにしている場合は、クライアントアプリケーション用に最適化された.NETFrameworkのサブセットであるクライアントプロファイルのみを要求できます。.NET 4.0クライアントプロファイルを対象とするようにプロジェクトのプロパティを設定し、省略したアセンブリを使用していないことを確認する必要があります。
ただし、これに多くの時間を無駄にすることはお勧めしません。最後に、クライアントプロファイルは、フルバージョンよりも約15〜16%小さかっただけでした。これは、今日の世界のほとんどの地域で見られる高速インターネット接続に大きな違いをもたらす量ではありません。また、実際のメディアで配布する場合は、問題はさらに少なくなります。
依存関係のないアプリケーションを提供することに完全に行き詰まっている場合(他の回答へのコメントが示唆しているように)、あなたはあなたの前に困難な道を歩んでいます。手始めに、.NETとC#を完全に削除し、代わりにCやC++などのアンマネージ言語に切り替える必要があります。これは、C#とは非常に異なるプログラミング環境です。あなたが世界で最高のC#プログラマーであるとしても、C++を習得するための重要な学習曲線があります。
そして、それでもすべての問題を解決できるわけではありません。最新バージョンのVisualStudioを使用してコンパイルされたC++アプリケーションでは、適切なバージョンのCランタイムライブラリがユーザーのマシンにインストールされている必要があります。もちろん、これは.NET Framework全体よりもはるかに小さいパッケージですが、常に存在することを期待できるわけではないため、アプリケーションと一緒にインストールする必要があります。
さらに、.NET Framework(WinForms、WPF、Silverlightなどを含む)とは異なり、C++にバンドルされているGUIライブラリはありません。また、ネイティブプラットフォームAPI以外のGUIライブラリ(たとえば、Qtは、まだ説明できない理由で非常に人気があります)を選択すると、追加の依存関係が得られます。あなたはモデルとしてGoogleのアプリケーションについて数回言及しています。GoogleChromeはWin32APIを直接対象としており、その基本フレームワークの上にカスタムGUIを描画するための独自のコードを多数作成しています。これが、依存関係を完全に排除する唯一の方法です。そして、アプリの市場投入をかなりの期間遅らせます。