私は、DNXCore のみを対象とすることに非常に注意を払ってきた DNXCore5 アプリケーションを持っています。とにかく、ごくわずかな手順で Windows Server 2012 R2 に問題なく公開できます。私はUbuntuで同じことをしようとしています。環境をセットアップし、公開したプロジェクトをコピーしました。Kestrel を Web サーバーとして使用しているため、Windows でも Linux と同じです。
私はすでに dnvm をセットアップしており、ランタイムのベータ 5 を正常にインストールしています。次に、Visual Studio が作成した kestrel スクリプトを実行可能としてマークします。
chmod +x ケストレル
(何らかの理由で) そこにない dnx のローカル コピーを起動しようとするため、最後の行が失敗するため、kestrel スクリプトをそのまま実行できません。
exec "$DIR/approot/runtimes/dnx-coreclr-win-x64.1.0.0-beta5/bin/dnx" --appbase "$DNX_APPBASE" Microsoft.Framework.ApplicationHost kestrel "$@"
そのため、最後の行を次のように変更します。
dnx --appbase "$DNX_APPBASE" Microsoft.Framework.ApplicationHost kestrel "$@"
dnx だけを入力すると、次の出力が得られるため、正しいフレームワークを使用していることがわかります。
Microsoft .NET Execution environment Mono-x64-1.0.0-beta5-12103
Usage: dnx [options]
Options:
--appbase <PATH> Application base directory path
--lib <LIB_PATHS> Paths used for library look-up
--debug Waits for the debugger to attach before beginning execution.
-?|-h|--help Show help information
--version Show version information
--watch Watch file changes
--packages <PACKAGE_DIR> Directory containing packages
--configuration <CONFIGURATION> The configuration to run under
--port <PORT> The port to the compilation server
./kestrel 経由で kestrel スクリプトを起動すると、
System.InvalidOperationException: The current runtime target framework is not compatible with 'MyApp'.
Current runtime Target Framework: 'DNX,Version=v4.5.1 (dnx451)'
Type: Mono
Architecture: x64
Version: 1.0.0-beta5-12103
Please make sure the runtime matches a framework specified in project.json
at Microsoft.Framework.ApplicationHost.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0
at Microsoft.Framework.Runtime.Common.EntryPointExecutor.Execute (System.Reflection.Assembly assembly, System.String[] args, IServiceProvider serviceProvider) [0x00000] in <filename unknown>:0
at dnx.host.Bootstrapper.RunAsync (System.Collections.Generic.List`1 args, IRuntimeEnvironment env) [0x00000] in <filename unknown>:0
このエラーを取り除く方法を知っている人を見つけるのに苦労しています。プロジェクト (Web アプリ、およびクラス ライブラリ) のビジュアル スタジオ ソリューション エクスプローラーで参照ノードを開くと、完全なフレームワークを対象としていません。どちらも「DNX Core 5.0」のノードが 1 つしかなく、プロジェクトのプロパティ セクションでそれをターゲットにしています。この参照をどこから取得していると思われるかはわかりません。私の project.json ドキュメントは次のとおりです。
リブ
"dependencies": {
},
"frameworks": {
"dnxcore5": {
"dependencies": {
"System.Collections": "4.0.10-beta-23019",
"System.Runtime": "4.0.20-beta-23019",
"Microsoft.CSharp": "4.0.0-beta-23019"
}
}
}
ウェブアプリ
"dependencies": {
"Microsoft.Framework.ConfigurationModel": "1.0.0-beta5",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta5",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta5",
"Microsoft.Framework.Logging": "1.0.0-beta5",
"Microsoft.Framework.Logging.Console": "1.0.0-beta5",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5",
"Newtonsoft.Json": "7.0.1",
"Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-beta5",
"System.Security.Cryptography.DeriveBytes": "4.0.0-beta-23019",
"MyLib": "1.0.0-*",
"Kestrel": "1.0.0-beta5"
},
"frameworks": {
"dnxcore5": {
"dependencies": {
"System.Runtime.Extensions": "4.0.10-beta-23019",
"System.Collections": "4.0.10-beta-23019",
"System.Runtime": "4.0.20-beta-23019",
"Microsoft.CSharp": "4.0.0-beta-23019",
"System.Private.Networking": "4.0.0-beta-23109",
"System.Net.Security": "4.0.0-beta-23109"
}
}
},
ホスティングに Kerstrel を使用していることも確認しました。何か案は?私は完全に立ち往生しています。