36

Visual Studio 2010 で Package Manager コンソールからお気に入りのソース管理を使用しようとしていました。別のトピックで説明されている問題がありました。今のところ、最善の答えは、すべてのコマンド ラインを Visual Studio からベア PowerShell に移動することです。

ただし、この場合、Visual Studio 関連のコマンドレットは機能していません。たとえば、最も重要なもの — Entity FrameworkUpdate-Databaseからコマンドを実行できません。

現在のプロジェクトの Visual Studio 固有のコマンドレットを PowerShell に登録することはできますか? packagesまたは、PowerShell がサブフォルダーから現在のプロジェクト コンテキストを自動的に取得するようにしますか?

4

3 に答える 3

13

NuGet PowerShellコマンドは、Visual Studio内からの実行に依存しているため、コマンドラインから実行される通常のPowerShellの外部では機能しません。

ただし、EntityFramework NuGetパッケージに付属しているmigrate.exeを使用し、コマンドラインからそれを使用してデータベースを更新することができます。

プロトタイプとして、 SharpDevelopを使用して通常のPowerShellコマンドラインからNuGetPowerShellコマンドを使用する方法をまとめました。残念ながら、現時点ではEntityFrameworkNuGetパッケージはSharpDevelopでは機能しません。

もう1つの興味深いプロジェクトは、新しいDTEを提供するStudioShellです。VisualStudioの内部でドライブしますが、コマンドラインの外部でも使用できます。通常のPowerShellコマンドラインから実行されるNuGetPowerShellコマンドをサポートしているとは思いません。

于 2012-10-15T06:57:55.413 に答える
9

NuGet.psd1 ファイルは次の場所にあります。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\5ttpefif.3mk\Modules\NuGet\NuGet.psd1.

ただし、ロードしようとすると:

PS> Import-Module $pathToNuGetPsd1 -Force -NoClobber -Scope Global
Import-Module : The name of the current Windows PowerShell host is: 'ConsoleHost'.
The module 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\
Extensions\5ttpefif.3mk\Modules\NuGet\NuGet.psd1' requires the following Windows
PowerShell host: 'Package Manager Host'.

私たちは運が悪いと思います。パッケージ マネージャー ホストから実行する必要があり、Matt が述べたように Visual Studio からのものが必要です。

私の問題を解決するために、Chocolatey を使用して NuGet.CommandLine をインストールし、次に NuGet.bat を使用して必要なことを行いました。もう少し手間がかかり、何をしようとしているのかによっては、すべての場合に機能するとは限りません。

チョコレート: https://github.com/chocolatey/chocolatey/wiki/Installation

NuGet.CommandLine:

PS> cinst NuGet.CommandLine
于 2014-03-07T17:30:10.843 に答える
4

私は Visual Studio のコマンドレットにあまり詳しくありませんが、Import-Module -Name <ModuleName>. 「Get-Module -ListAvailable」を使用して、利用可能な (別名「インストール済み」) PowerShell モジュールを一覧表示できます。

私の推測では、Visual Studio コマンドレットは独自の PowerShell モジュールに含まれていますが、.NET の標準的な場所のいずれかに「インストール」されていない可能性は十分にあり$env:PSModulePathます。この場合、モジュール ディレクトリを見つけて .psd1 または .psm1 ファイルを直接インポートし、それをImport-Module -Name <FullPathToModuleFile>.

上記の例として、Windows Azure PowerShell モジュールが配置されている場所に注意してください: http://trevorsullivan.net/2012/06/07/introducing-microsofts-official-windows-azure-powershell-module/

これは Program Files ディレクトリの下にあり、完全修飾パス (.psd1 モジュール マニフェスト ファイル) からモジュールをインポートしない限り、PowerShell ですぐには使用できません。

お役に立てれば。

于 2012-10-14T18:12:54.560 に答える