2016-06-15 11 views
1

.NETコアを使用してself contained Webアプリケーションを作成したいとします。私は、Windowsのすべてのバージョンをターゲットにしたいと私のproject.jsonでこれを持っている:私はdotnet publish --runtime win10-x64を実行すると.NETコアアプリケーションの公開時に複数のランタイムをターゲットにする

"runtimes": { 
    "win10-x64": { }, 
    "win8-x64": { }, 
    "win7-x64": { } 
} 

は私が一度に公開するために、単一のランタイムを指定することができます。私は私のバイナリの3つのコピーを維持する必要があります。

3つのランタイムのすべてに対して自分のアプリケーションを公開し、完全に自己完結型アプリケーションとしてそのフォルダをコピーすることはできますか?

+0

それは私には意味がありません。公開コマンドを実行すると、** ONE **システムに公開されます。このシステムは、単一のOSバージョンのみを実行します。配備先の各ターゲットシステムに対してpublishコマンドを実行するだけです。 – Tseng

+0

@Tseng RC1。ウィンドウをターゲットにすることができます。RC2では、ウィンドウのバージョンをターゲットにする必要があり、展開が複雑になります。 @svickは 'win7-x64'をターゲットにして適切なアイデアを持っています.Windowsのすべてのバージョンをサポートできます。 –

+0

あなたは常に1つのマシン/ OSに展開し、そこにパラメータとして追加するので、展開がより複雑になるわけではありません。以前と同じようにdnxを使うことができますが、移植可能なアプリを作る必要があります。これは、手動でランタイムをインストールする必要があります(これはdnxとも同じです)。Windowsマシンでは – Tseng

答えて

5

自己完結型アプリケーションを作成すると、実行する必要があるすべての依存関係が含まれます。私が知る限り、さまざまなバージョンのWindowsに公開するのが異なるのは、古いバージョンの場合、新しいバージョンに組み込まれているいくつかの依存関係をバンドルする必要があるということです。

これは、サポートされているすべてのバージョンのWindows上で動作する自己完結型アプリケーションの1つのバージョンを使用するには、次の操作を実行できます。最も古いバージョンのWindows(win7-x64)を使用します。

Linuxでは一般的にバージョン間でバイナリ互換性が維持されないため、同じアプローチがLinuxでは動作しない可能性があります。

+0

MonoをLinux上で動作させることは確かです。古いLinuxシステムでMonoをビルドした場合、新しいバージョンのLinux 、RHEL、CentOS、Debian、SUSE、Ubuntu、何でも - 各ディストリビューションのパッケージを公開せずに.NET Coreでこれを行う方法が大好きです。 – Cocowalla

関連する問題