4

このようなMVC 3 Webアプリケーションを使用してゲームアプリケーションを作成しました

ここに画像の説明を入力

このコントローラ/アクションは Like \Home\Game です

この MVC アプリを EXE ファイルに変換して、すべてのユーザーが自分の PC で実行できるようにすることは可能ですか。Windows アプリ用の EXE ファイルを作成できることはわかっていますが、Web アプリ用には可能ですか?

4

1 に答える 1

5

直接ではありません。

あなたができることは、モノ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

于 2013-10-10T07:04:03.373 に答える