web-dev-qa-db-ja.com

MSBuildの未処理の例外:UseShellExecuteが設定されていない限り、FileNameプロパティはディレクトリであってはなりません

バージョン

  • dotnetコアSDK:2.1.403
  • docker:18.09.7
  • Linuxカーネル:5.0.0-27
  • Ubuntu:18.04.3

問題

DockerでASP.NET Coreプロジェクトを実行しています。 docker-compose upすると、次のようになります。

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)

エラーは、dockerfileのdotnet restore行にヒットしたときに発生するようです。

権限を確認した後、dockerは直接関連するすべてのファイル/フォルダーに対する読み取り/書き込み権限を持っているようです

今朝いくつかの更新があり、この投稿の他の人も彼らが持っていたと言っていました。それらが同じ更新であったかどうかは不明です。しかし、いくつかの更新がありました。 これがすべて発生し始めた朝の更新ログです

私のDockerfileはそうです:

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"]
26
Ian Kirkpatrick

私はubuntu 9.04でも同じ問題がありました。 linux-generic=5.0.0.13.14にダウングレードしましたが、現在は機能しています。

次のコマンドを実行してください:

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

次に、「Ubuntu詳細オプション」を使用して再起動し、linux-generic_5.0.0.13.14optonを選択します。

0
jcmordan

このバグはUbuntuで確認されています: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1843018

関連する.net Coreの問題: https://github.com/dotnet/corefx/issues/4085

0
John Sloper

ソリューション


apt-add-repository -y ppa:teejee2008/ppa
apt-get update
apt-get install ukuu
ukuu --install-latest
リブート
uname -sr

0
MiguelJm

私は昨日から同じ問題に取り組んできましたが、kali linuxから問題なく作成して作業したため、ubuntunから問題が発生しましたが、18.04と19.04で試行してもエラーが発生し続けました。

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"]
0
dturan