2013-02-21 2 views
1

현재로드 된 솔루션에 포함 된 nuspec에서 모든 nuget 패키지를 게시하고 업데이트하는 과정을 단순화하는 내부 사용을 위해 VS2012 확장을 작성했습니다. 나는이 작업을 수행하는 공식 패키지 소스에서 Nuget.Core를 참조했습니다 다른 VS 확장의 종속 관계 관리

는 공식 nuget 확장에 확장 수준 종속성을 추가 한 다음 포함 할 Nuget.Core 어셈블리 하지에 내 로컬 참조를 표시 한 VSIX에서.

어제까지 nuget이 업데이트되었을 때까지 괜찮 았습니다. 이제는이 코어 어셈블리의 이전 버전을로드 할 수 없으므로 내 확장이 전혀 작동하지 않습니다. 버전 번호는 항상 변경됩니다.

나는 새로운 버전을 nuget에서 얻으려고했지만 방금 출시되지 않았습니다.

그래서 몇 가지 옵션에 직면하고 있습니다 : 함께 다시

  • 확장을 릴리스 최신 버전
  • 참조하는 nuget 확장의 설치 위치에서 DLL로 리디렉션 바인딩

그러나 Nuget이 업데이트 될 때마다 패키지를 다시 작성하고 릴리스하고 싶지 않으므로 이들 중 어느 것도 이상적이지 않습니다. 마찬가지로 메인 너겟 확장 기능을 중지시킬 수 있으므로 확장 기능이 포함 된 어셈블리 복사본을 배포하고 싶지 않습니다.

아무도 나를 위해 다른 옵션이 있습니까?

답변

0

I tweeted this question to Luan Nguyen - 누가 Nuget 제품 전체에서 작동하는지.

응답 체인에서 알 수 있듯이 해결책은 지원되지 않기 때문에이 아닌 이 아니므로 Nuget.Core를 직접 참조 할 수 있습니다. Nuget에서 제공하는 서비스 제공 업체는 Nuget 운영의 일부를 담당하지만 제가 찾고 있던 것은 아닙니다.

코드 렉스로부터 Nuget 소스를 가져 와서 어셈블리의 로컬 복사본을 만들었습니다 (다른 ID를 사용하여 너겟 확장을 방해하지 않음).

새로운 패키지 기능이 Nuget에 추가되면이 기능을 계속 유지해야하지만 확장 기능이 업데이트되면 작동합니다.

다른 옵션은 로컬 Nuget.Core를 확장자로 ILMerge하는 것입니다. 그러나 그것은 WPF 어셈블리이며 병합 할 수 없습니다. 표준 위성 어셈블리를 만들면 Nuget을 병합 할 수 있습니다. 내가 생각하기에.

0

확장 기능은 실제로 Nuget에 따라 다르므로 매번 새로운 버전의 확장판을 출시하는 것이 가장 좋습니다.

VS 확장 성 자체에 관해서는 아는 한 ServiceProvider를 사용하여 확장간에 통신하는 방법이 있습니다. 서비스를 공유하거나 공유 된 서비스를 이용할 수 있습니다. Nuget이 서비스를 제공한다면 당신은 Nuget을 통해 그것을 사용할 수 있습니다.

설명판으로 ServiceProvider Class 설명서를 확인하십시오.

0

개발자가 개발 한 종속성의 정확한 버전으로 소프트웨어를 배포해야합니다. 사용자는이를 가질 수 없습니다.

아 퓨 크 (Afaik). 이것은 표준입니다. 왜 아무것도 망가 뜨릴까요? 시도 해봐.

+0

다른 확장이 업데이트되어 내 코드가 다른 버전의 DLL에 의존하는 최신 버전의 DLL을 배포 할 때 문제가 발생합니다. 이것은 닷넷 런타임로드 에러를 던지면서 더 낮은 버전에 대해 빌드 되었기 때문에 내 확장을 깨뜨린다. Nuget이 출시 될 때마다 업데이트하지 않도록 팀을 제한 할 수 없습니다. -하지만 업데이트 할 때 Nuget 확장을 깨 버리기 때문에 동등하게 코어 DLL을 배포 할 수 없습니다. –

+0

컴퓨터에 여러 버전의 라이브러리를 동시에 저장할 수 없습니까? 그러면 정확한 버전을 명시 적으로 참조 할 수 있습니다. –