2017-09-28 16 views
0

자체 프로젝트를 사용하는 VS 2015 솔루션 (예, 하나의 프로젝트) 안에 상당히 큰 프로젝트가 있습니다. NuGet 패키지 (그리고 그 패키지 내에 많은 네임 스페이스가 있습니다.)NuGet 패키지 참조에 관한 'aaa.dll'과 'bbb.dll'모두에 'XXX'유형이 있습니다.

나는 하나의 클래스 만 사용해야하는 새로운 (더 새로운) NuGet 패키지를 가지고 있지만 그 클래스는 하나의 이름 공간과 충돌합니다 더 많은) 기존 NuGet 패키지.

더 재미있게 만들기 위해, 다른 여러 NuGet 패키지에 사용 된 동일한 새 패키지로 많은 다른 네임 스페이스가 있습니다.

What use is the Aliases property of assembly references in Visual Studio 8 :

extern alias의 주제에 이러한 SO/블로그 게시물을 읽으면서. https://blogs.msdn.microsoft.com/ansonh/2006/09/27/extern-alias-walkthrough/ http://geekswithblogs.net/bconlon/archive/2014/12/18/ambiguous-classes-in-c.aspx

나는 (이 예외 로깅을 포함한다) 나는 단순히 필요한 NuGet 패키지를 추가가 globalexcept에에서 별칭이다 바꿀 수 있다고 생각하고 전에 그랬던 것처럼 모든 것이 이제 컴파일해야한다. 필자는이 패키지가 가져온 새 DLL의 네임 스페이스를 명시 적으로 사용하지 않았다면 어디에서나 기존 DLL 네임 스페이스를 계속 사용할 것이라고 믿었 기 때문에 이것을 생각했습니다.

NuGet 패키지를 추가하고 DLL의 별칭을 변경하여 다시 작성하지 않아서이 가정은 잘못되었습니다. 수많은 exists in both 빌드 오류가보고됩니다.

답변

0

아아. (레거시) 솔루션 종속성은 NuGet 패키지가 아니라 로컬에서 참조 된 DLL이었습니다.

여기 학습 : 참조를 확인하십시오.