Тип существует в 2 сборках (из-за зависимости пакета) - PullRequest
2 голосов
/ 16 марта 2020

Я столкнулся с той же проблемой, что и в Тип существует в 2 сборках :

Тип существует в обеих а также

Я попробовал ответить на вопрос , набравший наибольшее количество голосов , однако, Я все еще получаю ошибку .
Я полагаю, это потому, что мои настройки сильно отличаются от вопроса: у меня есть два моих проекта ProjectA и ProjectB, каждый из которых использует полностью разные пакеты NuGet, которые используют зависимости / типы с точно таким же именем, но от разных поставщиков (без префикса поставщика!). Оба этих проекта упоминаются в ProjectC

ProjectA
- Packages
-- UnrelatedPackage1
--- Dependency (VendorA)
ProjectB
- Packages
-- UnrelatedPackage2
--- Dependency (VendorB)
ProjectC
- Refences
-- ProjectA
-- ProjectB

Теперь я хотел бы поймать в коде ProjectC исключение, возникшее в зависимости ProjectA:

try {
   ProjectA.SomeClass.DoStuff();
}
catch (ExceptionFromDependency ex)
{ }

но я не могу, так как

Тип ExceptionFromDependency существует в обоих а также

Я добавил псевдоним projectb к ссылке ProjectB в ProejctC, как рекомендовано в ответе , но это не исправило ошибку - возможно, потому что источником является не сам проект, а зависимость от зависимости.
Как я могу исправить ошибку, чтобы я мог поймать исключение? Я никогда не планирую использовать какие-либо типы из 'Dependency (VendorB)', и я бы предпочел ограничить его существование до ProjectB, если это предлагает более простое решение.

1 Ответ

0 голосов
/ 16 марта 2020

Существует обходной путь для псевдонима самого пакета , но он недоступен из пользовательского интерфейса, отредактируйте и добавьте следующий Target в ProjectC файл .csproj:

<Target Name="ChangeAliasesOfAssemblies"
        BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
  <ItemGroup>
    <ReferencePath Condition="'%(FileName)' == 'Dependency.VendorB'">
      <Aliases>projectb</Aliases>
    </ReferencePath>
  </ItemGroup>
</Target>

, где Dependency.VendorB - это имя файла .dll без расширения пакета 'Dependency (VendorB)'. Очистить / восстановить / перезапустить IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...