2016-09-04 8 views
1

データアクセス用の単一のクラスライブラリを使用して簡単な.netコアMVCアプリケーションを構築し、構築/展開/展開に必要なアイデアを得たかったのですが、 LinuxでCoreを実行します。私が望むほどシンプルではありませんでした!.Net Core MVCアプリケーションをUbuntu 16.04にインストールする:

EDIT:誰もが興味を持っている場合はここで、ソリューションのコピーです: https://s3.amazonaws.com/kilonova-public/code/CoreCrossPlatform.zip

私は、これらの命令ごとのUbuntu Serverの16.04とインストールDOTNETコア/ wを一緒にVirtualBoxのVMを投げた:

https://www.microsoft.com/net/core#ubuntu

VS2015のホスト(Win10)に最新の必要なすべてのビットをインストールし、MVCアプリと「DataAccess」という単一クラスライブラリを備えたソリューションを作成しました。最新のコアプロバイダを使用してMySQLと話し合うのはEF Coreです。私はそれを実行/デバッグするときに、すべてWin10ホスト上で完璧に動作します。データを引き上げると素晴らしいです。

1.0.0-preview2-003121

しかし、私はUbuntuのVMにデプロイするとき、私はクラスライブラリの依存関係に次のエラーを取得:

は は

ホストとVMの両方で「DOTNETの--versionは、」私を与えます

Project corecrossplatform (.NETCoreApp,Version=v1.0) will be compiled because the version or bitness of the CLI changed since the last build 
Compiling corecrossplatform for .NETCoreApp,Version=v1.0 
/opt/dotnet/corecrossplatform/project.json(24,23): error NU1002: The dependency DataAccess does not support framework .NETCoreApp,Version=v1.0. 

Compilation failed. 
    0 Warning(s) 
    1 Error(s) 

Time elapsed 00:00:00.0187782 

"dotnet restore"または "dotnet run"を実行するかどうかにかかわらず発生します。正直言って、このことを正しく展開しているかどうかはわかりません。ドキュメンテーションは不安定で、私はいくつかの推測をしています。私はプロジェクトフォルダ "src \ CoreCrossPlatform"(bin、Program.cs、appsettings.jsonなどを含む)からVMにすべてをコピーしました。これはVM内の "dotnet"コマンドを実行しています。

DATAACCESS .jsonファイル:

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
     "Microsoft.EntityFrameworkCore": "1.0.0", 
     "MySql.Data.Core": "7.0.4-IR-191", 
     "MySql.Data.EntityFrameworkCore": "7.0.4-IR-191", 
     "NETStandard.Library": "1.6.0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

MVCのproject.json:注意すべき

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "DataAccess": "1.0.0-*" 
    }, 

    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

何か:私は "DOTNET新しい" を使用してサンプルプロジェクトを実行し、復元、VIS実行上のチュートリアルのリンク、それはうまく動作します。

私には何が欠けていますか?もう一つの側面の質問:このタイプのアプリをLinuxボックスに公開するにはどうすればよいでしょうか?私はその部分を閉じていますか?

ありがとうございました。

EDIT:すべての午後、この死んだ馬を蹴っている間、私はこの「NU1002」エラーに関連し、私はオンラインで見つけるいくつかのノートを、比較、およびサンプルプロジェクト「DOTNET新しい」が生成されます。

"frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
      "Microsoft.NETCore.App": { 
       "type": "platform", 
       "version": "1.0.0" 
      } 
     }, 
     "imports": [ 
      "dnxcore50", 
      "dotnet5.6", 
      "portable-net45+win8" 
     ] 
    } 
} 

EDIT:goatyに多くのおかげで:彼としてノー成功...同じエラーで、次のように両方のproject.jsonファイル(MVCとCLASSLIB)の「枠組み」のセクションを変更してみましたコメントに指摘し、ソリューション全体をコピーしてビルドすると、ビルドに成功します。しかし、私はエラーなしで実行することはできません。 MySQLのEFコアの依存関係を回復していないよう:

Project CoreCrossPlatformFlat (.NETCoreApp,Version=v1.0) will be compiled because the version or bitness of the CLI changed since the last build 
Compiling CoreCrossPlatformFlat for .NETCoreApp,Version=v1.0 
/opt/dotnet/corecrossplatform/src/CoreCrossPlatformFlat/project.json(25,52): error NU1001: The dependency MySql.Data.EntityFrameworkCore >= 7.0.4-IR-191 could not be resolved. 

Compilation failed. 
    0 Warning(s) 
    1 Error(s) 
+0

に役立つことを願っています

src/ |---DataAccess/ |---CoreCrossPlatform/ 

このような構造をお勧めします。あなたのsrc/CoreCrossPlatformフォルダには、Webプロジェクトだけがあります。クラスライブラリはありませんか? –

+0

@goaty - 本当に変です。ルートに圧縮されていない可能性がありますか?新鮮なコピーを取り直しました。ありがとう。 –

+0

あなたの新しいアップロードはアクセスが拒否されたと言っています:) –

答えて

1

DataAccessライブラリには、あなたのsrc /ディレクトリの外に存在します。したがって、Webプロジェクトは参照を見つけることができませんでした。 は、私はちょうどあなたのソリューションをチェックアウト:)

関連する問題