Я не уверен на 100%, но я предполагаю, что, поскольку в случае csproj-файлов в стиле SDK при сборке в выходной каталог обычно записывается только dll вашей сборки.Когда вы запускаете не тестовый netcoreapp, dotnet cli проверяет, какие ссылки на проекты и ссылки на nuget у вас есть, и настраивает загрузчик сборок для загрузки из их «исходных» расположений, а не копирует все сборки в папку bin вашего приложения.Возможно, инфраструктура модульного тестирования не поддерживает загрузку сборок таким образом и создает Content
элементов из каждой библиотеки DLL, что говорит шагу build
о копировании содержимого (в данном случае библиотеки DLL) в выходной каталог (bin\$(Configuration)\$(TargetFramework)
).).Поэтому, когда вы запускаете модульные тесты, инфраструктура модульных тестов содержит все необходимые сборки в одном каталоге, в то время как это обычно не относится к не тестовым проектам.
Далее необходимо понимать, что когда NuGet упаковывает проектон ищет элементы MSBuild типа Content
и помещает их копии в каталоги nupkg content
и contentFiles
.Из-за того, как работает NuGet, компилятору передаются только библиотеки dll в каталогах lib\
или ref\
внутри nupkg, поэтому любые библиотеки dll, имеющие каталог содержимого, не будут переданы компилятору, поэтому ваш проект, ссылающийся на этот nupkgне может использовать классы в этих библиотеках.Это не то, как люди обычно намереваются использовать пакеты NuGet, и поэтому NuGet генерирует предупреждение.
Итак, я считаю, что причина, по которой вы получаете это предупреждение, заключается в том, что вы упаковываете тип проекта, который не предназначен длябыть упакованнымТип проекта делает некоторые необычные вещи для того, чтобы работать, что вызывает предупреждения NuGet, потому что обычно, когда эта необычная вещь делается, это ошибка.
Я полагаю, что это случай XY проблемы .Я предполагаю, что вы упаковываете проект модульных тестов, потому что вы хотите поделиться некоторыми полезными кодами, полезными для тестов, возможно, некоторыми имитациями или кодом инициализации объекта.В этом случае я рекомендую вам создать новый проект classlib, поместить туда свой общий код, оставив все свои тестовые примеры в тестовом проекте netcoreapp, даже если это всего лишь один вызов метода в classlib.Таким образом, вы можете упаковать и поделиться библиотекой классов без предупреждений.Упаковка модульного теста кажется необычной, и было бы интересно обсудить, почему вы хотите это сделать, какую проблему вы собираетесь решить, и если упаковка теста действительно является лучшим способом ее достижения.К сожалению, переполнение стека не является хорошим местом для дискуссий, и его часто не поощряют.