.NET 6 SDK в контейнере Docker не загружает полные пространства имен внешних пакетов проектов, предназначенных для небольших пакетов SDK в API рабочей области Roslyn

Я использую .NET 6.0 SDK для регистрации экземпляра черезMSBuildLocatorв Рослине. В соответствии сMSBuildLocator.IsRegisteredэкземпляр регистрируется и возвращает true. Локально все работает идеально, и когда я загружаю внешние проекты (целевые .NET 6, 5 или даже .NET Core 3.1) и читаю символы, полное пространство имен возвращается правильно. Однако, когда я запускаю его в контейнере Docker, он не возвращает полное пространство имен. Внутренние пространства имен, на которые ссылаются в проекте, хороши, но не те, которые являются внешними, напримерMicrosoft.AspNetCore.Mvc.ControllerBase.

Это Dockerfile.

      # Set the base image as the .NET 6.0 SDK (this includes the runtime)
FROM mcr.microsoft.com/dotnet/sdk:6.0 as build-env

# Copy everything and publish the release (publish implicitly restores and builds)
WORKDIR /app
COPY . ./
RUN dotnet publish ./ -c Release -o out --no-self-contained

# Relayer the .NET SDK, anew with the build output
FROM mcr.microsoft.com/dotnet/sdk:6.0
COPY --from=build-env /app/out .
ENTRYPOINT [ "dotnet", "/RoslynApplication.dll" ] 

Примечание: я также меняю TargetFramework моегоRoslynApplicationсоответственно при создании образов Docker. Так жеWorkspace.Diagnosticsне возвращает никакой ошибки.

Кто-нибудь знает, почему локально они загружаются правильно, а в контейнере Docker - нет? Я попытался также добавить SDK 6.0 и SDK 5.0 в контейнер Docker, а затем зарегистрировать как экземпляр SDK 5.0 для проектов, ориентированных на эту платформу, но все равно не работал.

0 ответов

Другие вопросы по тегам