Как .Net / VisualStudio обрабатывает наличие зависимостей проектов, каждая из которых имеет различную цель nuget для одинаковых пакетов nuget - PullRequest
0 голосов
/ 06 июня 2018

У меня есть проект веб-службы в .Net 4.6.1, назовем его Project X , который имеет 2 ссылки на проекты (обе библиотеки классов), назовем их Project A и B .

A имеет это в package.config:

<package id="NLog" version="4.5.3" targetFramework="net35" />

В то время как X и B имеет это в своих пакетах.config:

<package id="NLog" version="4.5.3" targetFramework="net461" />

Теперь, когда я выполнил эту команду в решении проекта X:

Update-Package –reinstall nlog -ignoreDependencies

И далее я строюРешение X, а затем запустите X. Теперь я хочу знать, будут ли потоки кода в проекте X, использующие проект A или B, работать нормально для любого ведения журнала на основе nlog, которое они имеют внутри кода A или B?

Если ответить на это,Мне нужно больше объяснений, затем попросите поделиться любой ссылочной ссылкой, которая поможет мне понять этот тип установки и разрешение цели nuget для клиентских приложений, ссылающихся на зависимости с другой целью nuget для данного пакета nuget.

Спасибо

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

ИМХО Предложенный вопрос, поскольку он является дубликатом, недопустим, поскольку в нем говорится о сценариях, когда решение имеет проекты с различнымиВерсии nuget, что не в моем случае.

Поскольку мой вопрос касается обоих проектов, имеющих одинаковую версию nuget, но разные targetFramework.

Как и для A , это targetFramework = "net35",в то время как для B и X это targetFramework = "net461".

Но все 3 проекта A, B и X используют одну и ту же версию, т.е. 4.5.3.Извините, конфигурация, которую я дал ранее, показала версии как отличающиеся, но я не собирался говорить об этом, поэтому отредактировал, чтобы сделать версию такой же.те, кто используют одну и ту же версию, но другую цель targetFramework, адресуются во время сборки / выполнения клиентского приложения, то есть X здесь.

Это похоже на то, что X будет иметь nuget dll с наивысшим целевым фреймом, скопированным и скопированным в его корзину?если нет, что происходит тогда?

1 Ответ

0 голосов
/ 06 июня 2018

Это похоже на то, что X будет иметь Nuget DLL с наивысшим целевым фреймом, скопированным и скопированным в его корзину?если нет, что произойдет тогда?

Проект X будет иметь возможность извлекать и копировать Nuget .Net 461 dll в свою корзину, но не из-за наивысшего целевого кадра.Это потому, что проект X ссылается на пакет nuget NLog напрямую с целевой структурой 461.

Вы можете изменить многословность вывода проекта MSBuild на Normal или выше, Tools-> Options-> Projectsи Решения-> Построить и запустить-> MSBuild подробности сборки проекта.В окне вывода вы можете заметить, что NLog.dll под net45 копировать в папку проекта x bin:

enter image description here

И NLog.dll в net35 копии в проект Папка с корзиной:

enter image description here

Чтобы узнать больше об этой проблеме, я рекомендую проверить следующеенить:

MSBuild не копирует ссылки (файлы DLL), если использует зависимости проекта в решении

Надеюсь, это поможет.

...