0

ソース管理からソリューションを開くプロセスを自動化しようとしています。

VS12 を開いていますが、ソリューションもプロジェクトも開いていません。ディレクトリを変更してから、パッケージ マネージャー コンソールからソリューションを開くことはできますか?

(これはちょっと的外れですが、全体的にこれを行うためのより良い方法がある場合に備えて)nuget経由でインストールされたpowershellモジュールを実行できるように、これをスクリプト化しようとしています:

PM> Get-MyProject 'SomeName'

次に、モジュールは pwd から最新のソース cd を取得し、ソリューションを開きます。私のモジュールは既にソースを取得できますが、powershell でソリューションを開く方法がわかりません。$dte でできるはずですが、試してみました:

PM> $dte.Solution.Open('NugetTest.sln')

エラーが返ってきます

"1" 個の引数を指定して "Open" を呼び出す例外: " が見つかりませんでした。(HRESULT からの例外: 0x80030002 (STG_E_FILENOTFOUND))" 行:1 文字:1 + $dte.Solution.Open('NugetTest.sln ') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : COMException

4

1 に答える 1

1

パッケージ マネージャー コンソールの既定のディレクトリは (変更するプロファイルを定義していない場合)、%userprofile% です。おそらく、ソリューションが置かれている場所ではありません。PowerShell スクリプトを作成してソリューション ディレクトリに配置し、Power Shell コンソールから実行すると、次のようにしてソリューションのパスを取得できます。

$path = Split-Path -parent $MyInvocation.MyCommand.Path

次のようなソリューションを作成できます。

$solution = $dte.Solution
$solution.Create("C:\Temp", "MySolution.sln")

最初の引数はソリューションを作成するディレクトリを示し、2 番目の引数はソリューション自体の名前です。

既存のソリューションを開くには:

$solution = $dte.Solution
$solution.Open("<path to your solution>")

うまくいかない場合は、パスが間違っている可能性があります。

于 2013-02-23T14:40:07.967 に答える