2016-07-07 8 views
1

現在アクティブなドットネットのバージョンをプログラムでどのように判断するのですか?私はdnvmのリストを実行することはできますが、私の人生は変数、ファイル、文字列に出力を転送することはできません...何も動作するように見え、私はなぜ推測することはできません。dnvm listを解析する方法

dnvm list > currentList.txt 

出力がコンソールに表示され、ファイルにリダイレクトされません。

それはstderrに書き込みをしていないと思われる - > & 2 1は何も変わりません...

これが動作しない理由、それはずっとだろうに誰でもいくつかの洞察を提供することができれば感謝。 これを正しく照会するPowershellの方法はありますか?

+0

:あなたはしたい(http://stackoverflow.com/a/3495491/2486496)[利用できる '.Net'のバージョンを取得]、または実行ですから、このような何かを行うことができます'dnvm list'の出力をコンソール経由で表示するのではなく、正しくパイプしたいのですか? – gravity

+0

さて、ビルドの対象となるバージョンがインストールされ、現在アクティブに設定されているかどうかをプログラムで判断できるようにする必要があります。だから、どうしたら起こるのかは私にはあまり重要なことではありません。 Powershellでこれを行うより適切な方法があれば、私はそのルートをとってうれしいです。 – BenAlabaster

答えて

1

$ env:UserProfile \ .dnx \ binフォルダには、dnvm.ps1スクリプトがあります。これを分析すると、コンソールのヘルプからわからないことが分かります。このps1スクリプトに委任されたコマンドファイルだけです。関数の引数はコマンドラインから渡すことができます。パワーシェル。ただ、明確にする

#This is the version we're looking to run against 
$required = @{ 
    Version = "1.0.0-rc1-update2"; 
    Architecture = "x64"; 
    Runtime = "clr"; 
    OperatingSystem = "win" 
} 

#Check to see if the version we need is installed... 
$installed = (dnvm list -PassThru | ? { 
    $_.Version -eq $required.Version -and 
    $_.Architecture -eq $required.Architecture -and 
    $_.Runtime -eq $required.Runtime -and 
    $_.OperatingSystem -eq $required.OperatingSystem 
}) 

if ($installed -eq $null) { 
    # The version we require isn't installed... 
    # ...installing it will set it as active 
    dnvm install -VersionNuPkgOrAlias $required.Version ` 
       -Architecture $required.Architecture ` 
       -Runtime $required.Runtime ` 
       -OS $required.OperatingSystem 
} 
elseif (!$installed.Active) { 
    # The version we require is already installed... 
    # ...just set it active 
    dnvm use -VersionOrAlias $required.Version ` 
      -Architecture $required.Architecture ` 
      -Runtime $required.Runtime ` 
      -OS $required.OperatingSystem 
} 
-1

dnxとdnvmはなくなり、dotnetは異なるモデルを使用します。もう "アクティブな"ランタイムはありません。これで、アプリケーションがコンパイルされたランタイムが、アプリケーションの実行に使用されます。

+0

これは私の質問に答えるものではありません。様々な理由から、dnxとdnvmで瞬間固執しています。他のサードパーティ製ソフトウェアのドライバはまだdotnetコア用に更新されていないためです。 – BenAlabaster

+0

dnxでサードパーティのライブラリを使用できる場合は、.NETコアでそれらを使用できるはずです。 dnxcore50をターゲットにしているという問題がある場合は、単に 'imports'が必要です。 dnx451をターゲットにしている場合は、.NETコアプロジェクトでターゲットフル.NET Frameworkを使用することもできます。これが何か違うなら、私は知りたいと思うだろう。 – Pawel

関連する問題