2016-05-17 14 views
5

私はDebian 8 amd64システムに.NET Core RC2をインストールしており、Microsoft SQL Serverのインスタンスを問い合わせることができるかどうかテストしたいと考えています。.NET Core RC2コンソールアプリケーション(Linux、Debian 8)でSystem.Dataを使用するにはどうすればよいですか?

私はプロジェクトにSystem.Data.SqlClientアセンブリへの依存関係を追加したいと思います。

現在dotnet new CLIツールを実行することによって作成された私のプロジェクトファイルには、次のようになります。類似したクエリにthis answerを使用して

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0-rc2-3002702" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

、私は

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50" 
    } 
} 
を変更 System.Data.Commonへの参照を追加することができました

フラグメント〜

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50", 
    "dependencies": { 
     "System.Data.Common": "*" 
    } 
    } 
} 

dotnet restoreでNuGetを使ってたくさんのものをダウンロードしました。

私はその後

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "dnxcore50", 
    "dependencies": { 
     "System.Data.SqlClient": "*" 
    } 
    } 
} 

を読むためにそのフラグメントを変更しようとしましたが、NuGetはそれが

「.NETCoreApp、バージョン= v1.0のための 'System.Data.SqlClientの' を解決できませんだと言います'

私は読むためにバージョン文字列を変更する場合は、 "4.1.0-rc3-を*" エラーメッセージがちょうどより具体的な取得します。

解決できません

「System.Data.SqlClientの(> = 4.1を.0-rc3) 'for' .NETCoreApp、Version = v1.0 '。

私が困惑しているのは、the NuGet package gallery dedicated to .NET Coreには、System.Data.SqlClientが明示的に記載されているということです。

System.Data.SqlClientアセンブリへの参照をプロジェクトに追加してNuGetにダウンロードさせるにはどうすればよいですか?

私は現在、dotnet CLIツールのみを使用してプレーンコンソールで遊んでいます。 IDEのインストールに頼らずに.NET Coreプロジェクトのプロジェクト依存関係を管理する方法はありますか?

+0

そこに何が起こっているか正確にわからないが、バージョン ' "4.1.0 - *" を試してみてください'。何らかの理由で(現在のところ) '4.1.0-rc2-24027'が動作します。 – poke

+0

@poke、それは働いて、ありがとう! – kostix

+0

この記事をお探しの方には:Microsoft SQL Server 2005のインスタンスに 'System.Data.SqlClient'ログを作成することに失敗し、[問題](https://github.com/dotnet/corefx/issues/8645)を提出しました。この問題について。 – kostix

答えて

6

コメントの注釈が既に正しく注釈されています。 System.Data.SqlClientにバージョンを指定すると、リストアが幸せになります;)

なぜですか?ギャラリーhttp://nuget.orgSystem.Data.SqlClientが存在します。プロジェクトの境界(ナゲットフィードパッケージのような)の外側でバージョン( "")を指定することはできません。"*"(これを行うべきではありません。変更を破棄することができます)利用可能な最高のバージョンを復元します。安定していないので星は何も見つかりません(後ろにダッシュが付いた魔法があります)。そのライブラリのRC2バージョンは上記の4.1.0-rc2-24027であり、4.1.0-rc2- *で問い合わせると、RC2ビルドの中で最高のものが使用されます(ただし、1つしかありません)。これと比較してSystem.Data.Commonは、Universal Windows Platformのnuget.orgに一般公開されており、そのために発見されています。

RC3は次のリリースで、.NET CoreおよびASP.NET Coreチームの開発者フィードでのみ利用でき、公開ナゲットフィードでは利用できません。あなたはそれらと遊ぶべきではありません。

+0

@poke編集に感謝します。 – Thomas

+0

ありがとう(そして@poke):提案された解決策は魔法ではなく、予想される動作であることを知っておくとよいでしょう。 – kostix

+2

この回答への素早い追加:デフォルトのフィードはmygetではなく「通常の」ナゲットフィードです。 star( '" * ")バージョンの依存関係は、常に最新の* stable *バージョンのパッケージを取得します。したがって、 'System.Data.Common'に対しては、[' 4.0.0'](https://www.nuget.org/packages/System.Data.Common/)を取得します。しかし、安定した 'System.Data.SqlClient'は存在しないので、失敗します。 'dotnet restore'を実行した後、' project.lock.json'を見れば、実際にどのバージョンが使われているのかを確認できます。 – poke

1

あなたはproject.jsonファイルである場合は、下盛、最新のツールとのVisual Studioを更新した場合は、インテリセンスは今、あなたをガイド...

私は、依存関係の要素に次のように追加し、それが完璧に動作します。..

"System.Data.SqlClientの": "4.1.0-rc2-24027"、

関連する問題