У меня есть проект GitHub ( Test Automation Essentials ), который ссылается на некоторые специфические сборки Visual Studio (Microsoft.VisualStudio.TestTools.UITest.Extension
, который является частью CodedUI; но это не важно для вопроса). Этот проект опубликован в виде пакета NuGet, содержащего мою библиотеку классов.
Я хочу, чтобы мой проект поддерживал разные версии Visual Studio, и в целом эта сборка не имеет заметных различий между версиями Visual Studio, поэтому я не ожидаю каких-либо проблем совместимости (она должна быть обратно совместимой) тем не мение).
Однако, если я компилирую свой проект в одной версии Visual Studio (например, 2015), когда я пытаюсь ссылаться на пакет NuGet из проекта в более новой версии Visual Studio (например, 2017), когда запускается хост-проект, я получите следующее исключение:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestTools.UITest.Extension, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file
Примечание: моя библиотека ссылается на эту сборку с Specific Version=False
.
Я обнаружил, что могу обойти эту проблему, добавив следующий элемент в app.config
приложения:
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.TestTools.UITest.Extension" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="12.0.0.0-15.0.0.0" newVersion="15.0.0.0"/>
</dependentAssembly>
Примечание: в данном конкретном случае исполняемый файл обычно QTAgent32_40.exe
, который сам является частью Visual Studio, поэтому мне пришлось добавить элемент в QTAgent32_40.exe.config
, а не фактически в файл app.config
проекта. QTAgent32_40.exe.config
уже имеет много подобных dependentAssembly
элементов, но по какой-то причине не для этой конкретной сборки.
Вопрос:
Я не хочу, чтобы мои клиенты сами добавляли этот параметр. Я был бы рад, если бы у меня была такая настройка, специфичная для моей библиотеки классов , чтобы любой, кто ссылается на мою библиотеку, автоматически получал этот параметр Assembly Redirect. Однако я не нашел способа сделать это ...
Кто-нибудь знает, как мне это сделать?