Иерархический Directory.Packages.props с GlobalPackageReference не разрешается для тестовC#

Место общения программистов C#
Ответить
Anonymous
 Иерархический Directory.Packages.props с GlobalPackageReference не разрешается для тестов

Сообщение Anonymous »

У меня есть следующая структура проекта (репозиторий https://github.com/asarkar/functional-csharp-buonanno)

Код: Выделить всё

root
├── Directory.Packages.props
├── src
│   └── Proj1
│       └── Proj1.csproj
└── tests
├── Directory.Packages.props
└── Proj1.Tests
├── Proj1.Tests.csproj
└── Proj1Tests.cs
root/Directory.Packages.props root/tests/Directory.Packages.props Proj1.Tests.csproj: Но Proj1Tests.cs не может найти Xunit. Почему?
Ссылка: 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»