c# asp.net docker

c# - Excepción no controlada de MSBuild: la propiedad FileName no debe ser un directorio a menos que se establezca UseShellExecute



asp.net docker (9)

Versiones

  • dotnet core sdk: 2.1.403
  • acoplador: 18.09.7
  • Kernel de Linux: 5.0.0-27
  • Ubuntu: 18.04.3

Problema

Estoy ejecutando un proyecto ASP.NET Core en Docker. Cuando docker-componer, obtengo lo siguiente:

Unhandled Exception: Microsoft.Build.BackEnd.NodeFailedToLaunchException: The FileName property should not be a directory unless UseShellExecute is set. ---> System.ComponentModel.Win32Exception: The FileName property should not be a directory unless UseShellExecute is set. at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at Microsoft.Build.BackEnd.NodeProviderOutOfProcBase.LaunchNode(String msbuildLocation, String commandLineArgs) --- End of inner exception stack trace --- at Microsoft.Build.CommandLine.MSBuildApp.BuildProject(String projectFile, String[] targets, String toolsVersion, Dictionary`2 globalProperties, Dictionary`2 restoreProperties, ILogger[] loggers, LoggerVerbosity verbosity, DistributedLoggerRecord[] distributedLoggerRecords, Int32 cpuCount, Boolean enableNodeReuse, TextWriter preprocessWriter, Boolean detailedSummary, ISet`1 warningsAsErrors, ISet`1 warningsAsMessages, Boolean enableRestore, ProfilerLogger profilerLogger, Boolean enableProfiler) at Microsoft.Build.CommandLine.MSBuildApp.Execute(String[] commandLine) at Microsoft.Build.CommandLine.MSBuildApp.Main(String[] args)

El error parece ocurrir cuando llega a la línea de dotnet restore de dotnet en el dockerfile.

Después de verificar los permisos, parece que Docker tiene permisos de lectura / escritura para todos los archivos / carpetas directamente involucrados

Hubo algunas actualizaciones esta mañana que otros en esta publicación han dicho que también tenían. Se desconoce si eran las mismas actualizaciones. Pero hubo un par de actualizaciones. Aquí está mi registro de actualización de la mañana en que todo comenzó a suceder .

Mi Dockerfile es así:

FROM microsoft/dotnet:2.1.403-sdk as dotnet WORKDIR /vsdbg RUN apt-get update / && apt-get install -y --no-install-recommends / unzip / && rm -rf /var/lib/apt/lists/* / && curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg WORKDIR /ProjA # Install TRX -> JUnit log file converter # https://github.com/gfoidl/trx2junit RUN dotnet tool install -g trx2junit RUN export PATH="$PATH:/root/.dotnet/tools" COPY ProjA.sln . COPY ProjA/ProjA.csproj ./ProjA/ COPY ProjA.Tests/ProjA.Tests.csproj ./ProjA.Tests/ COPY ProjB/ProjB.csproj ./ProjB/ COPY ProjC/ProjC.csproj ./ProjC/ RUN mkdir ProjA.Tests/tmp RUN dotnet restore # ******* Error seems to happen here... COPY . . WORKDIR /ProjA/ProjA/ CMD ["dotnet", "run"]


Ejecutamos Ubuntu 18.04 en Azure como nuestros hosts Docker. Azure recientemente lanzó la versión 5.0.0-1018 del núcleo, lo que causó el problema en nuestros contenedores de Linux. La degradación a la versión 4.18.0-1025 del kernel nos lo arregló.


El mismo problema aqui. Actualice el kernel de Ubuntu a la última versión (5.0.0-27-generic) para resolver el problema.



He estado luchando con el mismo problema desde ayer, pero el problema proviene de ubuntun, porque creé y trabajé sin problemas de kali linux, pero seguí recibiendo errores a pesar de mis intentos en 18.04 y 19.04.

Versión Docker

Version: 19.03.2 API version: 1.40 Go version: go1.12.8 Git commit: 6a30dfc Built: Thu Aug 29 05:29:11 2019 OS/Arch: linux/amd64 Experimental: false

Dockerfile

FROM microsoft/dotnet:2.1-sdk AS build COPY . project/ WORKDIR /project run dotnet restore dotnet.sln FROM build AS publish WORKDIR /Project/ RUN dotnet publish dotnet.sln -c Release -o /app FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime COPY . Project/ WORKDIR /app EXPOSE 8003 FROM runtime AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "dotnet.dll"]


La solución más simple para .Net Core 2.1 and 2.2 es usar una versión inferior de Ubuntu.

on: [push] jobs: build: runs-on: ubuntu-16.04 steps: - uses: actions/checkout@v1 - name: Build the Docker image run: docker build . --file Dockerfile --tag yourtagname:$(date +%s)


Me encontré con el mismo problema hoy, con archivos Docker que funcionaban bien durante meses. Hubo algunos repositorios que funcionaron, pero otros simplemente no. Sin NINGÚN cambio. Los archivos Docker no se pudieron ejecutar y obtuvieron el mismo error "Excepción no controlada de MSBuild: la propiedad FileName no debe ser un directorio a menos que se establezca UseShellExecute". Originalmente estaba usando Docker 18.09.7 y actualicé a 19.3.2, pero eso no ayudó.

Estaba ejecutando Ubuntu 18.04.3 y noté algunas actualizaciones instalando en la mañana. Este es un sistema de compilación simple, con muy poco instalado (VS Code, Gitkraken, docker, docker-compose)

Como algunas de mis compilaciones fallaban y no pude encontrar un culpable, reinstalé y bajé a Ubuntu 18.04.2 y reinstalé las pocas cosas que necesito para compilar. Y todo volvía a funcionar. Sospecho que las actualizaciones de la mañana rompieron las cosas. Lamentablemente no guardé el registro de actualización :-(


Me encontré con el mismo problema y la corrección del núcleo de Linux de 5.0.0-27-generic a 5.0.0.-25-generic lo solucionó.

Una manera simple de degradar el kernel de Linux es usar el paquete Uku , cuya licencia cuesta 12 $.

La alternativa gratuita se describe here .

Otra posibilidad es aumentar el tiempo de espera de GRUB y elegir la versión de kernel deseada en el menú de inicio en cada inicio de sistema de forma manual, que se describe here .


Soluciones


apt-add-repository -y ppa: teejee2008 / ppa
apt-get update
apt-get install ukuu
ukuu --install-latest
reiniciar
uname -sr


Tuve el mismo problema en ubuntu 9.04. Hice la degradación a linux-generic=5.0.0.13.14 y está funcionando ahora.

Simplemente ejecute el siguiente comando:

sudo apt install linux-image-generic=5.0.0.13.14 linux-headers-generic=5.0.0.13.14 linux-generic=5.0.0.13.14

Luego reinicie usando "Opciones avanzadas de Ubuntu" y luego elija la opción linux-generic_5.0.0.13.14 generic_5.0.0.13.14.