2017-09-20 5 views
1

프로젝트에 NuGet 패키지를 추가해야하는 VS Extension을 작성하고 있습니다. 난 here, 특히 IVsPackageInstaller.InstallPackage(string, Project, string, string, bool) 메서드를 제안 인터페이스를 사용하고 있습니다. 패키지가 잘 설치되고 packages.config가 관련 버전을 포함하도록 변경되지만 NuGet 패키지를 설치할 때 일반적으로 생성되는 바인딩 리디렉션은 생성되지 않습니다.Nuget.VisualStudio를 사용하여 NuGet 패키지를 설치할 때 바인딩 리디렉션을 어떻게 생성합니까?

공개적으로 액세스 할 수있는 API를 호출하는 '올바른 방법'이 있습니까? 아니면 app.config가 XML처럼 효과적으로 수정되는 방식으로 '자신 만의 방식으로 게시'할 수 있습니까?

답변

0

바인딩 리디렉션은 프로젝트 수준에서 작동하며, 우리는 종종 프로젝트에서 작동하는 프로젝트 파일이나 .config 파일에서 리디렉션을 바인딩합니다.

NuGet API에서는 프로젝트 파일 및 프로젝트 구성 파일을 수정하는 메소드를 제공하지 않습니다. NuGet 패키지에서만 작동하는 packages.config 파일 만 변경됩니다.

바인딩 리디렉션을 구현하는 데는 두 가지 방법이 있습니다. 하나는 언급 한대로 app.config를 수정하는 것입니다. 또 다른 방법은 코드에서 바인드 리디렉션입니다. 아래 코드를 참조 할 수 있습니다.

SideBySide Error with Binding Redirect in .net Windows Service

+0

이 약간 오해의 소지합니다 - NuGet API는 packages.config 변경 -뿐만 아니라 프로젝트에 대한 참조를 추가합니다. 그리고 그것이 어떻게 작동하는지 이해합니다 -하지만 이것은 VS 확장입니다 - 그래서 AssemblyResolve 핸들러를 사용하여 코드에서 바인딩을 리디렉션하려면 코드를 생성하고 빌드중인 프로젝트에 추가해야합니다 - 아마도 덜 간단 할 것입니다 단순히 app.config를 수정하는 것보다 –

+0

Nuget API는 단지 Install을 제공하고 프로젝트에서 패키지를 제거합니다. 그리고 설치/제거 프로세스는 프로젝트 파일을 변경시키는 참조를 프로젝트에 추가/제거합니다. 그러나 해당 어셈블리 만 참조합니다. 다른 버전이있을 때 리디렉션하지 않습니다. –