c# - استثناء غير معالج لـ MSBuild: يجب ألا تكون خاصية FileName دليلًا ما لم يتم تعيين UseShellExecute




asp.net docker (6)

تم تأكيد هذا الخطأ على أوبونتو: bugs.launchpad.net/ubuntu/+source/linux/+bug/1843018

المشكلة الأساسية .net الأساسية: https://github.com/dotnet/corefx/issues/40850

إصدارات

  • dotnet core sdk: 2.1.403
  • عامل ميناء: 18.09.7
  • Linux Kernel: 5.0.0-27
  • أوبونتو: 18.04.3

مشكلة

أقوم بتشغيل مشروع ASP.NET Core في عامل ميناء. عندما أقوم بالإعداد ، أحصل على ما يلي:

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)

يبدو أن الخطأ يحدث عندما يضرب سطر dotnet restore dotnet في dockerfile.

بعد التحقق من الأذونات ، يبدو أن عامل التشغيل لديه أذونات القراءة / الكتابة لجميع الملفات / المجلدات المشاركة مباشرة

كانت هناك بعض التحديثات هذا الصباح التي قالها الآخرون في هذا المنشور لديهم أيضًا. سواء كانوا نفس التحديثات غير معروف. ولكن كانت هناك تحديثات زوجين. هنا سجل التحديث الخاص بي من الصباح الذي بدأ كل هذا يحدث .

يشبه ملف 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"]

كان لي نفس المشكلة على أوبونتو 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

ثم linux-generic_5.0.0.13.14 التشغيل باستخدام "خيارات Ubuntu Advanced" ثم اختر linux-generic_5.0.0.13.14 generic_5.0.0.13.14.


لقد واجهت نفس المشكلة منذ يوم أمس ، لكن المشكلة تنبع من أوبونتون ، لأنني خلقت وعملت دون مشاكل من kali linux ، لكنني واصلت تلقي الأخطاء على الرغم من محاولاتي في 18.04 و 19.04.

نسخة عامل الميناء

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

محاليل


apt-add-repository -y ppa: teejee2008 / ppa
apt-get update
apt-get install ukuu
ukuu - تثبيت أحدث
اعادة التشغيل
uname-sr


نفس المشكلة هنا. قم بتحديث أوبونتو نواة إلى الإصدار الأخير (5.0.0-27 عام) حل المشكلة.


واجهت نفس المشكلة اليوم ، مع ملفات عامل ميناء كانت تعمل بشكل جيد لعدة أشهر. كان هناك بعض repos التي نجحت ، ولكن البعض الآخر ببساطة لا. دون أي تغييرات. فشلت ملفات Docker في التشغيل وحصلت على نفس الخطأ "MSBuild Unhandled Exception: يجب ألا تكون خاصية FileName دليلًا ما لم يتم تعيين UseShellExecute". كنت أصلاً أستخدم عامل التشغيل 18.09.7 وقمت بالترقية إلى 19.3.2 ، لكن هذا لم يساعد.

كنت أقوم بتشغيل Ubuntu 18.04.3 وقد لاحظت بعض التحديثات التي يتم تثبيتها في الصباح. هذا نظام بناء بسيط ، مع القليل جدًا من التثبيت (VS Code ، Gitkraken ، عامل ميناء ، عامل ميناء)

نظرًا لأن بعض تصميماتي قد فشلت ولم أتمكن من العثور على جاني ، فقد قمت بإعادة تثبيتي وخفضت إلى Ubuntu 18.04.2 وأعدت تثبيت بعض الأشياء التي أحتاج إلى بنائها. وكان كل شيء يعمل مرة أخرى. أظن التحديثات في الصباح كسر الأشياء. لسوء الحظ لم أحتفظ بسجل الترقية :-(