2016-07-07 8 views
1

完全なエラーがあると参照されていないアセンブリで定義されています型「オブジェクトが」ネットコアプロジェクト

型「オブジェクトは」参照されていないアセンブリで定義されています。あなたは「mscorlib、バージョン= 4.0.0.0 ...」アセンブリへの参照を追加する必要があります

を、私はこのように、純4.5のアセンブリにまだあるMongoClientをインスタンス化しよう:

var client = new MongoDB.Driver.MongoClient(@"mongodb://localhost:27017/"); 
if (client == null) 
{ 
    return; 
} 

ビルドエラーは、client == null行にあります。

次のように私のproject.jsonがある:

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MongoDB.Driver": "2.2.4", 
    "MongoDB.Driver.Core": "2.2.4", 
    "MongoDB.Bson": "2.2.4" 
    }, 

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

私のVMは、OSとしてWin10を持っているので、私は唯一の.Net 46Xインストールされています。

dnxcore50のインポートを削除し、完全なnet46インポートに置き換えました。私は何か間違っているのですか?

+0

実際に.netコアをインストールしましたか? –

+0

はい。私は構築し、デフォルトのMvc Asp.Netコアテンプレートを実行することができます。パッケージの復元も成功しています。 – tverboon

+0

プロジェクトに 'System'がありますか? – user3185569

答えて

4

netstandard1.6フレームワークを削除して解決し、 "net46"に置き換えました。私はネットスタンダード1.6で、.Net 4.6フレームワークをインポートしてdnxcore50のインポートを削除してから、ここで述べるようにフルライブラリで実行する必要があるという印象を受けました:https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md#mapping-the-net-platform-standard-to-platforms

当面は完全な.Netフレームワークのみを対象とするようにプロジェクトを変更しました。 .Net Core Mongoドライバが入手できたら、netcoreappとしてそれをターゲットにできます。

私project.jsonは今です:

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MongoDB.Driver": "2.2.4", 
    "MongoDB.Driver.Core": "2.2.4", 
    "MongoDB.Bson": "2.2.4" 
    }, 

    "frameworks": { 
    "net46": { } 
    } 
} 

おかげ@Nickアコスタに私を指しているために:私はCoreFXにエリックMellinoからの応答を持っている

A common class library consumed by both .NET Core and .Net 4.5.2

更新レポ:https://github.com/dotnet/corefx/issues/9885#issuecomment-231194545

あなたの最初のバージョン:

"フレームワーク":{ "netstandard1.6":{ "輸入": "net46" }}

は基本的に言っている:「私netstandard1.6をターゲットライブラリを構築します、 でも、 と互換性がなくても、net46用に構築されたものを参照させてください。アセンブリは互換性がないので、 はコンパイルできません。問題は、MongoClientがmscorlib.dllにある System.Objectタイプを参照していることです。 NETSTANDARD.App、 netstandard1.6を対象とする場合は、System.Runtime.dllにある のSystem.Object型を参照する System.Runtime.dllを取得しようとしています。 がこの不一致を調整できるmscorlibファサードがないため、コンパイルエラーが発生します。

.NET Framework用に構築する場合は、2番目の方法、つまり

"frameworks":{"net46":{}、}

.NETコア用にビルドする場合は、netstandardと互換性のあるバージョン MongoClientが必要です。これは、.NET Frameworkアプリケーションから使用される になります。

関連する問題