если есть какой-либо способ буквально связать пакет nuget со всеми его зависимостями как автономный пакет?
Не с текущим набором инструментов, но это самый высокийupvoted проблема на GitHub .
Если это то, что вам действительно нужно, вы можете использовать PackagePath , чтобы включить dll в ваш пакет (например, <None Include="path\to\framework.dll" PackagePath="lib/<tfm>/" />
). В качестве альтернативы, создайте файл nuspec
и укажите все сборки для включения .
Однако существует несколько проблем с этим. Во-первых, когда версия framework.dll
, поставляемая в комплекте с Package.A
, отличается от версии, поставляемой с Package.B
, какую версию будет использовать приложение? Имена файлов должны быть уникальными, поэтому оба не могут существовать одновременно. Сохраняя фреймворк как отдельный пакет, который зависит от обоих других пакетов, становится понятнее, что выбран только один, и ясно, какая версия была выбрана. Другая проблема заключается в том, что если в Framework есть ошибка, если это зависимость, приложение может просто ссылаться на Framework как на прямую зависимость, используя версию, которая исправляет ошибку. Если framework.dll входит в состав других пакетов, то необходимо не только исправить Framework, но и затем опубликовать новые версии других пакетов, которые включают эту новую версию. Вы делаете исправление ошибок обслуживания более сложным, когда вы связываете.
Однако я не верю, что что-то из этого решит вашу проблему. В вашем описании, что «он будет жаловаться на то, что более старая версия фреймворка не найдена» не хватает подробностей, чтобы понять, в чем именно заключалась ошибка, но я предполагаю, что у вашей dll фреймворка подписано строгое имя, и он не работает во время выполнения с ошибкой файла не найдено версии, с которой были скомпилированы пакеты. В этом случае вы, вероятно, захотите использовать перенаправления привязки , хотя для проектов в стиле SDK я подумал, что это следует делать автоматически, когда он обнаруживает несколько сборок, ссылающихся на разные версии одного и того же имени сборки.
Еслиэтот ответ не помогает, я думаю, что нам нужно больше информации о том, что именно вы получили, и как именно вы «создаете локальную версию Framework для клиента 1, чтобы протестировать некоторые изменения» (вы добавили ProjectReference
к framework.csproj, или вы скомпилировали framework.dll и добавили ссылку на эту dll в ваш тестовый проект, или что-то еще?)