Выберите указанный двоичный файл во время выполнения - PullRequest
1 голос
/ 23 января 2020

Предположим, у меня есть две версии сборки с одинаковыми интерфейсами c, но с немного отличающимися реализациями. Я ссылаюсь на одну версию во время разработки для компиляции. Во время запуска моей программы я хотел бы как-то выбрать, с какой из этих двух сборок работать.

Есть ли способ сделать это, не используя отражение, и который совместим со всеми. NET Реализациями стандарта 2.1?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Сборки не загружаются перед первым использованием - поэтому до тех пор, пока вы копируете понравившуюся версию в место, откуда она будет загружена, перед использованием любых типов из этой сборки она будет загружена.

Действительно с использованием отражение (Assembly.Load / LoadFrom) является более обычным решением, но оно имеет точно такое же ограничение - вы должны сделать это перед использованием любого типа, в противном случае загрузка по умолчанию logi c выберет все доступное (или просто потерпит неудачу) .

0 голосов
/ 23 января 2020

Я бы попытался использовать условия в csproj.

<ItemGroup Condition="'$(CONFIG)'=='DEBUG'>
   <ProjectReference Include="{PATH_TO_DEV_PROJECT}">
   ...
   </ProjectReference>
</ItemGroup>
<ItemGroup Condition="'$(CONFIG)'!='DEBUG'>
   <Reference Include="{PATH_TO_RELEASE_REFERENCE}" />
</ItemGroup>

Это может помочь скопировать правильную сборку. Вы также можете использовать <PackageReference>...</PackageReference>.

...