.net 8 Выполнение кода зависло на CSharpCompilation.Emit() в докереC#

Место общения программистов C#
Anonymous
.net 8 Выполнение кода зависло на CSharpCompilation.Emit() в докере

Сообщение Anonymous »

В нашем приложении мы использовали следующий код для компиляции динамического кода. Этот код отлично работал в .net 6

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

CSharpCompilation compilation = CSharpCompilation
.Create(
"InMemoryAssembly",
new[] { CSharpSyntaxTree.ParseText(stringText) },
ReferenceAssemblies.Net80)
.WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,  optimizationLevel: OptimizationLevel.Debug, checkOverflow: true))
.AddReferences(references);

try
{
using (var stream = new MemoryStream())
{
EmitResult result = compilation.Emit(stream);
stream.Seek(0, SeekOrigin.Begin);
byte[] byteAssembly = stream.ToArray();
return (result, byteAssembly);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
Теперь мы обновили наш проект до .net 8. Приведенный выше код работает нормально в Windows но не в образе Docker.
При выполнении кода докера зависает на EmitResult result = Compilation.Emit(stream);, и он не выдает никаких исключений и не двигается дальше.
Мой файл докера:

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

   FROM mcr.microsoft.com/dotnet/aspnet:8.0
$extraCommand
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "myapp.dll"]
Пакеты Nuget, которые я использовал
  • Basic.Reference.Assemblies Version="1.6.0"
  • Microsoft.CodeAnasis.CSharp Version="4.10.0-2.final"
  • Microsoft.CSharp Version="4.7.0.0"
  • System.Reflection.Emit Version="4.7.0"
Я не понимаю, почему бы не создать исключение или не двигаться дальше.< /p>
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/783 ... -in-docker

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