.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 для проектов, ориентированных на эту платформу, но все равно не работал.