솔루션 파일에 대한 문자열 파일 경로 예. C : \ Foo.sln, 어떻게 그 솔루션을위한 NuGet 패키지를 프로그래밍 방식으로 복원합니까? this guide을 따르려고했으나 불행하게도 불완전하다는 것을 알았습니다.C# 프로그래밍 방식으로 NuGet 패키지 복원
기사가 추천 한대로 NuGet 패키지 NuGet.VisualStudio를 설치 한 후 패키지 복원을 시도하고 있습니다. 여기
내가 지금까지 가지고있는 코드입니다 :// requires reference to System.ComponentModel.Composition
[Import(typeof(IVsPackageRestorer))]
private static IVsPackageRestorer packageInstaller;
그리고 그것을 사용하려고 (EnvDTE 참조를 요구하는 것) (어떻게 하나 개 사용이 마법 "의 getService"방법 않습니다 - 그에서 오는가를 ?) :
private static void RestorePackages(string solutionPath)
{
// Using the IComponentModel service
// https://docs.microsoft.com/en-us/nuget/visual-studio-extensibility/nuget-api-in-visual-studio#ivspackagerestorer-interface
// How do I get the project? Can I do this at the solution level or do I have to get all projects under the solution?
EnvDTE.Project project = null;
packageInstaller.RestorePackages(project);
////What is this code??? What is GetService???
////var componentModel = (IComponentModel)GetService(typeof(SComponentModel));
////IVsPackageRestorer packageRestorer = componentModel.GetService<IVsPackageRestorer>();
////packageRestorer.RestorePackages(project);
}
편집/솔루션 : 매트 구청의 추천을 사용하여, 코드가 전체 경로를 기반으로 패키지를 복원 할 내 경우에는 다음의 방법과 같은 모습을 nuget.exe하는 "밖으로 껍질"로 해결책.
private static void RestorePackages(string solutionPath)
{
using (Process process = new Process())
{
process.StartInfo = new ProcessStartInfo
{
FileName = "nuget.exe",
Arguments = $"restore {solutionPath}",
UseShellExecute = false,
CreateNoWindow = true
};
process.Start();
process.WaitForExit();
}
}