Может ли мое приложение .Net ссылаться на две разные версии библиотеки .net framework? - PullRequest
7 голосов
/ 31 января 2012

Скажем, у меня есть два проекта, P4 и P3, нацеленные на .net 4.0 и 3.5 соответственно.

Каждый проект также имеет ссылку на System.Data. В случае с P4 это будет System.Data v4.0.0.0 В случае P3 это будет System.Data v2.0.0.0

Проект P4 также ссылается на P3.

Если P4 загружен и выполнен, он использует .net 4.0 CLR. Во время выполнения ссылки на System.Data, по-видимому, разрешаются до версии 4.0 внутри P4 и P3. Я могу переопределить это с помощью перенаправлений ассемблера, но тогда и P4, и P3 преобразуются в v2.0.

Есть ли способ настроить приложение так, чтобы P4 использовал v4.0, а P3 - v2.0?

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Посмотрите на это: В процессе работы бок о бок Это может помочь.

3 голосов
/ 31 января 2012

Если у вас есть контроль над P3, да. Перейдите в раздел ссылок проекта, найдите ссылку System.Data и просмотрите ее окно свойств (щелкните правой кнопкой мыши -> Свойства).

Выберите «True» для свойства «Конкретная версия». Перекомпилировать, перераспределить и т. Д.

Обратите внимание, что это приведет к всевозможным сбоям во время выполнения, если .NET 2, 3 или 3.5 не установлены на машине, когда сборка пытается загрузить.

Редактировать

Я пробовал это, но безуспешно. P3 все еще работает v4.0. Знаете ли вы, будет ли этот параметр иметь видимый эффект в сборке, созданной для P3? Например. В манифесте указано «.ver 2: 0: 0: 0» независимо от того, установлено ли для «Определенная версия» значение true или нет.

Попробуйте добавить это в свой app.config:

<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...