У меня есть решение Visual Studio с:
- 2 .NET Standard 2.0 проекты (
.csproj
) proj A
(библиотека классов): proj refs -> proj B
, нет пакетов Nuget proj B
(библиотека классов): нет ссылок на проекты, нет пакетов Nuget
- 2 .NET Framework 4.7.2 проекты (
.csproj
) proj C
(библиотека классов): proj refs -> proj B
, несколько пакетов Nuget proj D
(тестовый проект): proj refs -> proj C
, proj B
& proj A
, несколько пакетов Nuget
Это решение прекрасно работает на моей локальной машине с VS Community 2017 15.7.3 Это решение также хорошо работает на моей сборочной машине, котораяиспользует MSBuild
от той же VS той же версии.
Проблема
Проблема возникает, когда я добавляю пакет Nuget (в данном случае Newtonsoft
)до proj A
.Решение отлично работает на моей локальной машине, но не работает при использовании MSBuild
.Кроме того, если я загружаю решение на свою сборочную машину, используя установленную там VS, оно прекрасно собирается.
Возникает ошибка:
error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?)
Я думаю, что я сузил проблему до проблемы, где .NET Standard
& .NET Framework
projects don 'Нельзя играть вместе с Nuget, когда они находятся в одном .sln
, потому что, если я полностью удаляю proj C
& proj D
, сборка будет успешной на моей машине сборки.Я также могу подтвердить, что пакет Newtonsoft
находится в моей папке C:/User/.nuget/packages
, но не находится в папке ./packages
каталога решений (что я вполне уверен, если это произойдет, поскольку это проект .NET Standard
?).
CI .yml
Файл
nuget.exe restore $SOLUTION_FILE
MSBuild.exe '/p:Configuration=release' $SOLUTION_FILE
Примечания
Я много читал, пытаясьчтобы найти проблемы, похожие на это, но ближе всего я получаю проблемы, которые очень похожи на этот .Эта проблема похожа, но использует сам проект .NET Standard
в качестве пакета Nuget, где я пытаюсь получить пакеты Nuget в сам проект .NET Standard
.Может быть, мне нужно извлечь все мои .NET Standard
проекты в пакет Nuget вместо того, чтобы использовать их в одном решении?