В VS2019 nuget не рассматривает проекты, на которые ссылаются, как lib, а как пакеты nuget
Фактически , новая функция nuget, которую вы использовали, а также PackagePath = "lib" функция будет рассматривать dll как зависимость nuget, а не как сборку dll.
Если вы просто хотите, чтобы Y был сборкой DLL, а не nuget пакет, эти методы не будут работать. Я пробовал эти методы, и это действительно заставило меня бороться.
После глубокого исследования я обнаружил, что проблема в том, что do tnet pack добавит указанный проект как пакет nuget автоматически помещается в основной пакет nuget. Поскольку dotnet pack
автоматически генерирует файл Nuspec
для упаковки проекта в соответствии с его правилами, которые по умолчанию обрабатывают указанный проект как пакет Nuget. Вы можете открыть файл X.nupkg
и увидеть это под X.nuspec
файл:
However, in this pack mechanism, we do not have the right to change the rule.
Suggestion
1) when you create the X.nupkg
file using Pack Button in VS2019, please do some changes to X.nupkg
manually.
Use zip to open nuget compressed package, then open X.nuspec
file and delete these node:
Сохраните изменения , а затем используйте измененный X.nupkg
.
2) Или вам следует создать собственный файл nuspe c на основе наших потребностей и правил вручную, чтобы управлять процессом пакета nuget.
Попробуйте использовать этот nuspec
файл:
<?xml version="1.0"?>
<package >
<metadata>
<id>xxx</id>
<version>1.0.0</version>
<title>xx</title>
..................
</metadata>
<files>
<file src="bin\xxx\xxx\Y.dll" target="lib\xxx(targetframework)"/>
</files>
</package>
Также если Y имеет другую зависимость Nuget, ее следует рассматривать в X без ссылки на нее непосредственно в X. использовать dll пакета зависимостей указанного проекта.
И зависимости от связанных проектов всегда существуют в основном проекте.
Кроме , если вы все еще хотите , вы можете сообщить об этих проблемах на форуме нашей команды , и я надеюсь, что команда внимательно их проверит и даст вам удовлетворительный ответ.