このようなMVC 3 Webアプリケーションを使用してゲームアプリケーションを作成しました
このコントローラ/アクションは Like \Home\Game です
この MVC アプリを EXE ファイルに変換して、すべてのユーザーが自分の PC で実行できるようにすることは可能ですか。Windows アプリ用の EXE ファイルを作成できることはわかっていますが、Web アプリ用には可能ですか?
このようなMVC 3 Webアプリケーションを使用してゲームアプリケーションを作成しました
このコントローラ/アクションは Like \Home\Game です
この MVC アプリを EXE ファイルに変換して、すべてのユーザーが自分の PC で実行できるようにすることは可能ですか。Windows アプリ用の EXE ファイルを作成できることはわかっていますが、Web アプリ用には可能ですか?
直接ではありません。
あなたができることは、モノxspを使用して単純な組み込みWebサーバーを作成することです。これを.exeに入れることができます。これにより、ポートxyでWebサーバーが起動し、
http://localhost:xy/optional-virtual-directory/Home/Game
インストールせずに動作するようにするには、その webserver-assembly を web-app の /bin ディレクトリに localcopy する必要もあります。
また、必要なすべての ASP.NET MVC-3 アセンブリを localcopy する必要があります (既定ではインストールされない可能性が高いため)。
また、誰かが MVC-4 をローカルにインストールした場合に備えて、バージョン 1.0.0 を追加する必要があります。
その場合でも、ターゲット コンピューターに .NET Framework 4.0 (または少なくとも 3.5?) がインストールされている必要があります。
最新の安定した XSP ソースへのリンク:
http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2
圧縮された Web アプリケーションを埋め込みリソースとして含め、unzip-library を使用して、Web サーバーのルート ディレクトリとして設定した書き込み可能なディレクトリに解凍できます。
Microsoft が提供する windows-server windows-explorer-integrated-zip-handling ユーティリティでは JavaScript ファイルが適切に解凍されないため、unzip-library が JavaScript ファイルを適切に解凍することを確認してください (サーバーのバージョンとセキュリティ設定/ポリシーによって異なる場合があります)。
static void Main()
{
int iPort = 8080; // If admin rights it requires, wrong it is ;)
iPort = 30080; // Damn ! I still no haz no admin rightz !
string strBasePath = @"D:\UserName\documents\visual studio 2010\Projects\EmbeddableWebServer\TestApplication";
string strCurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(strCurrentDirectory);
//strBasePath = System.IO.Path.Combine(di.Parent.Parent.Parent.FullName, "TestApplication");
strBasePath = System.IO.Path.Combine(di.Parent.Parent.Parent.FullName, "TestMvcApplication");
//EmbeddableWebServer.cWebSource WebSource = new EmbeddableWebServer.cWebSource(System.Net.IPAddress.Any, iPort);
Mono.WebServer.XSPWebSource ws = new Mono.WebServer.XSPWebSource(System.Net.IPAddress.Any, iPort);
// EmbeddableWebServer.cServer Server = new EmbeddableWebServer.cServer(WebSource, strBasePath);
Mono.WebServer.ApplicationServer Server = new Mono.WebServer.ApplicationServer(ws, strBasePath);
Server.AddApplication("localhost", iPort, "/", strBasePath);
Server.Start(true);
System.Diagnostics.Process.Start("\"http://localhost:" + iPort.ToString() + "\"");
Console.WriteLine(" --- Server up and running. Press any key to quit --- ");
Console.ReadKey();
Server.Stop();
} // End Sub Main
このコードを使用して、不足しているロケール処理を回避しました。
using System;
using System.Collections.Generic;
using System.Text;
namespace System
{
public class Locale
{
// http://msdn.microsoft.com/en-us/library/441722ys(v=vs.80).aspx
// #pragma warning disable 414, 3021
public static string GetText(string message)
{
return message;
}
public static string GetText(string format, params object[] args)
{
return string.Format(format, args);
}
/*
public static object GetResource(string name)
{
return name;
}
*/
} // End Class Locale
} // End Namespace System
2019 アップデート:
2019 年末の時点で、.NET Core 3.1 を使用できます。これにより、ユーザーが .NET フレームワークをまったくインストールしなくても実行できる自己完結型のアプリケーションを構築できます。
x86 および x64 用の自己完結型 .NET Core アプリケーションをビルドするには:
dotnet restore -r win-x86
dotnet build -r win-x86
dotnet publish -f netcoreapp3.1 -c Release -r win-x86
Kestrel は、Mono.XSP の代わりに使用できる統合 Web サーバーです。
これにより、ポート xy (xy は未使用のポート番号) で MVC/.NET-Core Web アプリケーションを実行し、Web ブラウザーを起動できます。http(s)://localhost:xy