Код: Выделить всё
root
├── Directory.Packages.props
├── src
│ └── Proj1
│ └── Proj1.csproj
└── tests
├── Directory.Packages.props
└── Proj1.Tests
├── Proj1.Tests.csproj
└── Proj1Tests.cs
Код: Выделить всё
true
Код: Выделить всё
Код: Выделить всё
Ссылка: https://learn.microsoft.com/en-us/nuget ... Management
Изменить 1:
Сообщения об ошибках выглядят следующим образом:
/home/.nuget/packages/xunit.v3.core/3.1.0/_content/DefaultRunnerReporters.cs(3,20):
ошибка CS0400: тип или имя пространства имен «Xunit» не удалось найти в
глобальном пространстве имен (вам не хватает ссылки на сборку?)
Я спросил ChatGPT, и он сказал:
xUnit v3 (новая основная версия) изменил способ структурирования своих сборок. GlobalPackageReference восстанавливает пакет, но не ссылается автоматически на сборки в проекте. Другими словами, компилятор видит папку пакета NuGet, но ваш проект на самом деле не ссылается на сборку xunit.core — поэтому использование Xunit не удается.
Почему это работало с v2
В xunit v2.* сборки были структурированы так, что GlobalPackageReference было достаточно для тестовых проектов, поскольку SDK неявно добавлял ссылки из пакета. v3 разделяет пакеты (xunit.core, xunit.abstractions, xunit.runner.visualstudio) и не подключает ссылки автоматически, даже в CPM.
Он рекомендует исправление, как я сам выяснил методом проб и ошибок. Я не знаю о .Net достаточно, чтобы оценить, говорит ли ChatGPT правду или лжет.
Использование PackageVersion в тестах/Directory.Packages.props (с версией) и PackageReference в тестах/Directory.Build.props (без версии), кажется, работает, но для этого все равно требуется дважды перечислить пакеты.
Подробнее здесь: https://stackoverflow.com/questions/797 ... snt-resolv
Мобильная версия