ไม่พบส่วนหนึ่งของเส้นทาง… bin \ roslyn \ csc.exe


811

ฉันพยายามเรียกใช้โครงการ Asp.net MVC ที่ดึงมาจากการควบคุมแหล่ง TFS ฉันได้เพิ่มการอ้างอิงการชุมนุมทั้งหมดและฉันสามารถสร้างและรวบรวมได้สำเร็จโดยไม่มีข้อผิดพลาดหรือคำเตือน

แต่ฉันได้รับข้อผิดพลาดต่อไปนี้ในเบราว์เซอร์:

ไม่พบส่วนหนึ่งของพา ธ 'C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ roslyn \ csc.exe'

นี่คือภาพเต็มหน้าจอของหน้าข้อผิดพลาด

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากการวิจัยไม่กี่วันฉันเข้าใจว่าRoslynเป็นแพลตฟอร์มคอมไพเลอร์. Net ที่มีคุณสมบัติการรวบรวมขั้นสูง อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมบิลด์ของฉันจึงพยายามหา \ bin \ roslyn \ csc.exe เพราะฉันไม่ได้กำหนดค่าอะไรที่เกี่ยวข้องกับโรสลินหรือฉันตั้งใจจะใช้โรสลินในโครงการของฉัน


10
ทุกคนสามารถอธิบายได้ว่าเหตุใดจึงมีความจำเป็นเนื่องจากเป็นส่วนหนึ่งของการเรียกใช้แอปพลิเคชัน ASP.NET ที่คอมไพล์ มันใช้ csc.exe เพื่ออะไร
gregmac

1
ฉันคิดว่านี่จะอธิบายการมีส่วนร่วมของโรสลิน
andy250

4
โฟลเดอร์ Roslyn ไม่ได้รับการคัดลอกในโฟลเดอร์ bin ฉันแก้ไขโดยการติดตั้งแพคเกจติดตั้ง Microsoft.CodeDom.Providers.DotNetCompilerPlatform ด้านล่าง
Abdullah Tahan

12
การติดตั้ง Microsoft.CodeDom.Providers.DotNetCompilerPlatform อีกครั้งแก้ปัญหาของฉันได้
SurenSaluka

4
ฉันมีสิ่งนี้หลังจากเปิดโครงการในปี 2019 ก่อนหน้านี้มันใช้งานได้ในปี 2560 ฉันพบว่าการปรับลดรุ่น Microsoft.CodeDom.Providers.DotNetCompilerPlatform เป็นเวอร์ชันก่อนหน้าใด ๆ จากนั้นกลับไปเป็นเวอร์ชันล่าสุดแก้ไขปัญหาได้ แก้ไขปัญหาใน.csprojไฟล์ของฉันแล้ว
Neo

คำตอบ:


436

ปัญหาของเทมเพลต VS2015 เริ่มต้นคือคอมไพเลอร์ไม่ได้คัดลอกไปยังไดเรกทอรี tfr \ bin \ roslyn \ แต่แทนที่จะเป็น {outdir} \ roslyn \ directory

เพิ่มรหัสนี้ในไฟล์. csproj ของคุณ:

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>

9
นี่ไม่ได้แก้ปัญหาของฉัน ตอนนี้ผมได้รับ'ไม่สามารถหาไฟล์ 'C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ Roslyn \ csc.exe' โปรดสังเกตว่าเมื่อฉันสร้างโครงการ MVC ใหม่ใน VS2015 ฉันไม่เห็นการกำหนดค่าที่กล่าวถึงใน. csproj และทำงานได้อย่างสมบูรณ์แบบในเบราว์เซอร์
Eyad

4
ขอบคุณ ตอนนี้ฉันสามารถสร้างและเรียกใช้โครงการในเบราว์เซอร์หลังจากดาวน์โหลดไดเรกทอรี Roslyn และวางไว้ในโฟลเดอร์ / bin ฉันไม่ได้ใส่ PstBuildEvent ที่กล่าวถึงข้างต้นและยังใช้งานได้ บางทีคุณอาจต้องการแก้ไขคำตอบของคุณด้านบนและพูดถึงความจำเป็นในการวางไฟล์ Roslyn และสะท้อนวิธีแก้ปัญหาให้ดีขึ้น
Eyad

2
ในสถานการณ์ปกติ คุณควรจะมีคอมไพเลอร์ภายในโฟลเดอร์ $ (OutDir) roslyn *. * ของคุณดังนั้นสคริปต์นี้จะคัดลอกคอมไพเลอร์ไปยัง binfolder ของโครงการของคุณ เห็นได้ชัดว่าการติดตั้ง vs2015 ของคุณไม่ได้รวมคอมไพเลอร์
มิทเชล

9
ฉันพบว่าการอัพเดต Microsoft.CodeDom.Providers.DotNetCompilerPlatform เป็น 1.0.8 และ Microsoft.Net.Compilers 2.6.1 ช่วยฉันได้มาก ฉันไม่จำเป็นต้องเพิ่มเป้าหมายพิเศษนี้ ดูเหมือนว่ามีบางสิ่งที่คล้ายกันถูกเพิ่มเข้าไปในเครื่องมือรุ่นที่ใหม่กว่า: github.com/aspnet/RoslynCodeDomProvider/commit/ …
Ian Robertson

5
ฉันได้อัปเดตเวอร์ชัน Microsoft.Net.Compilers เป็นเวอร์ชัน 2.10.0 จาก Nuget และเป็นวิธีแก้ปัญหาสำหรับฉัน ฉันใช้ targetFramework = "4.6.2"
juanytuweb

1161

TL; DR

รันสิ่งนี้ใน Package Manager Console:

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

ข้อมูลมากกว่านี้

ปัญหานี้ไม่เกี่ยวข้องกับ Visual Studio ดังนั้นคำตอบที่แนะนำการเพิ่มขั้นตอนการสร้างเพื่อคัดลอกไฟล์จะค่อนข้างเป็นการแก้ปัญหา เช่นเดียวกันกับการเพิ่มไบนารีคอมไพเลอร์ด้วยตนเองในโครงการ

คอมไพเลอร์ Roslyn มาจากแพ็คเกจ NuGet และมี / เป็นจุดบกพร่องในบางแพ็คเกจของแพคเกจนั้น (ฉันไม่รู้ว่าอันไหน) วิธีแก้ไขคือติดตั้ง / อัปเกรดแพ็คเกจนั้นเป็นเวอร์ชันที่ปราศจากข้อผิดพลาด แต่เดิมก่อนที่ฉันจะเขียนคำตอบกลับในปี 2015 ฉันแก้ไขโดยติดตั้งแพคเกจต่อไปนี้ในบางรุ่น:

  • Microsoft.Net.Compilers 1.1.1
  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.1

จากนั้นฉันดูเป็น. csproj และตรวจสอบให้แน่ใจว่าเส้นทางไปยังแพคเกจนั้นถูกต้อง (ในกรณีของฉัน .. \ .. \ packages \ *. *) ภายในแท็ก<ImportProject>ด้านบนและใน<Target>ชื่อ "VerifyNuGetPackageBuildImports" ที่ด้านล่าง นี่คือ MVC 5 และ. NET Framework 4.5.2


11
นี่เป็นปัญหาของฉัน - โฟลเดอร์ bin / roslyn อยู่ที่นั่นเมื่อมีการสร้างโครงการอย่างไรก็ตามถ้าคุณลบมันหรือเช่นเดียวกับตัวควบคุมแหล่งที่มามันไม่ได้คัดลอกมันจะไม่ถูกสร้างขึ้นมาใหม่ ฉันคิดว่ามีปัญหา "ซิงค์" เล็กน้อยกับรุ่นเมื่อติดตั้ง 1.0.1 และอัปเดตไฟล์ Import in proj ให้เป็นรุ่นที่ถูกต้องบิลด์จะสร้างโดยอัตโนมัติคัดลอกโฟลเดอร์ Roslyn โดยไม่จำเป็นต้องโพสต์เหล่านั้น สร้างคำสั่ง
ตลก

16
ฉันค่อนข้างแน่ใจว่านี่เป็นทางออกที่ดีที่สุด ... ลองด้วยตัวเองด้วยแพ็คเกจอัปเดต - ติดตั้งใหม่ - โปรเจ็กต์ myprojectname
cr1pto

5
หลังจากทำสิ่งนี้ทั้งหมดแล้วไม่มีอะไรเปลี่ยนแปลงสำหรับโครงการของฉัน โฟลเดอร์ช่องเก็บยังคงแบนอยู่
อธิการบดี

8
หมายเหตุหนึ่ง: รุ่น 1.0.3 ของ Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget แพ็คเกจทำงานได้สำหรับฉัน แต่รุ่น 1.0.6 ทำให้เกิดข้อผิดพลาดในคำถามนี้
Daniel Neel

5
1.0.6 มีข้อผิดพลาด: github.com/aspnet/RoslynCodeDomProvider/issues/13
akatakritos

176

งานสร้างของคุณพยายามค้นหา\bin\roslyn\csc.exeเนื่องจากมีการเพิ่มแพ็คเกจต่อไปนี้ในโครงการของคุณ เพียงตรวจสอบpackages.configไฟล์ของคุณคุณสามารถมีทั้งสองไฟล์ได้

Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers

Roslyn คืออะไรและใครเพิ่มพวกเขา (แพ็คเกจ) ในโครงการ:หากคุณใช้. net Framework 4.5.2 เพื่อสร้างโครงการโดยใช้ VS2015 คุณอาจสังเกตเห็นว่าแม่แบบโครงการใช้ Roslyn โดยค่าเริ่มต้น จริง ๆ แล้วโรสลินเป็นหนึ่งใน คอมไพเลอร์โอเพนซอร์สสำหรับภาษา. NET จาก Microsoft

ทำไมเราควรลบ Roslyn: ถ้าโครงการของคุณมีการอ้างอิง Roslyn และคุณสนใจที่จะปรับใช้มันไม่มีเซิร์ฟเวอร์คุณจะได้รับข้อผิดพลาดที่ไม่พึงประสงค์บนเว็บไซต์เนื่องจากผู้ให้บริการโฮสต์หลายรายยังไม่ได้อัพเกรดเซิร์ฟเวอร์ของพวกเขา ในการแก้ไขปัญหานี้คุณจะต้องลบคอมไพเลอร์ Roslyn ออกจากเทมเพลตโครงการ

หากคุณไม่สนใจใช้ Roslyn ทำตามขั้นตอนต่อไปนี้เพื่อลบ

1. ลบแพ็คเกจ NuGet ใช้คำสั่งต่อไปนี้จาก Nuget Package Console

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers

2. หลังจากคุณทำเช่นนี้ไฟล์ web.config ของคุณควรได้รับการอัปเดตอัตโนมัติ ในกรณีที่ไม่ใช่ให้ค้นหารหัสด้านล่างในweb.configไฟล์และหากพบให้ลบรหัสชิ้นนี้

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"></compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"></compiler>
    </compilers>
</system.codedom>

28
นี่ไม่ใช่วิธีแก้ปัญหาหากคุณต้องการใช้คอมไพเลอร์ใหม่และคุณสมบัติใหม่
Matti Virkkunen

14
คุณกำลังต่อต้านอนาคต
cchamberlain

2
@cchamberlain ทำไมในอนาคต ฉันแค่คิดว่ามันควรจะไปข้างหน้าเพื่อใช้ แต่ดูเหมือนว่าหลายคนกำลังมีปัญหากับมัน
Alisson

1
@Alisson - Roslyn เป็นทิศทางที่สิ่งต่าง ๆ เข้ามามีคุณสมบัติภาษาที่ใหม่กว่ามีประสิทธิภาพมากขึ้นข้ามแพลตฟอร์มและโอเพนซอร์ส มันออกมาหลังจากเครื่องมืออื่น ๆ - ดังนั้นในอนาคต ไม่มีอะไรบอกว่าคุณต้องใช้มันการอัพเกรดส่วนใหญ่มีค่าใช้จ่าย ดูที่ "ทำไมการคอมไพล์ Roslyn ใน ASP.NET?" section: blogs.msdn.microsoft.com/webdev/2014/05/12/…
cchamberlain

1
หากคุณต้องการเผยแพร่โครงการ MVC ไปยังโฮสติ้ง Windows ที่ใช้ร่วมกันของ GoDaddy นี่คือคำตอบ GoDaddy ไม่สามารถเรียกใช้ไฟล์ปฏิบัติการได้เช่น csc.exe
34411 Jeson Martajaya

140

ทำความสะอาดและสร้างใหม่ใช้งานได้สำหรับฉัน!


4
ฉันไม่คิดว่าจำเป็นต้องทำความสะอาด ตามการสนทนาของปัญหานี้การสร้างใหม่ไม่ใช่งานสร้างปกติจะทำให้ไฟล์ Roslyn กลับมาเสมอ github.com/dotnet/roslyn/issues/15556
leemicw

ฉันเพียงแค่เรียกใช้ Build> สร้างโซลูชันใหม่และข้อผิดพลาดก็หายไป
Matt Merrill

สร้างใหม่แก้ไขได้สำหรับฉันฉันสังเกตเห็นสิ่งนี้ในผลลัพธ์Copying file from "C:\Users\medmondson\Source\UK\Portal\Branches\v12\Source\packages\Microsoft.Net.Compilers.1.3.2\tools\csi.exe" to "bin\Debug\roslyn\csi.exe".
m.edmondson

12
เพิ่งสร้างใหม่ไม่ได้ผลสำหรับฉันหลังจาก Clean + สร้างใหม่ข้อผิดพลาดหายไป
Bruno Miquelin

2
DotNetCompilerPlatform 1.0.3, Microsoft.Net.Compilers 1.3.2, VS Pro 2017 15.9.4 ที่นี่ การสร้างใหม่ทั้งหมดไม่ทำงานสำหรับฉันแม้แต่ก่อนและหลังการรีสตาร์ท Visual Studio ในที่สุด Build> Batch Build ... > สร้างใหม่ทั้งหมดได้หลอกลวง มันจะต้องกระซิบที่ถูกต้องไม่มีอะไรเลยที่จะทำให้ VS ดูว่ามันขาดหายไปในไดเร็กตอรี่ bin / roslyn ในผลลัพธ์
โยฮัน

59

นี่เป็นวิธี MSBuild เพิ่มเติมในการทำเช่นนี้

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>

แต่ฉันสังเกตเห็นว่าไฟล์ Roslyn ยังอยู่ในไดเรกทอรี bin ของฉัน (ไม่อยู่ในโฟลเดอร์) แอพดูเหมือนจะทำงานได้


4
คุณสามารถวางไว้ที่ใดก็ได้ในไฟล์. csproj ในระดับเดียวกับแท็ก <Target> อื่น ฉันมักจะวางไว้ที่ด้านล่าง
Rob Cannon

นี่ควรเป็นคำตอบที่ยอมรับได้จริง ๆ คุณสามารถตรวจสอบสิ่งนี้ในแหล่งที่มาและ schmuck ไม่ดีต่อไปที่ดึง repo ของคุณจะไม่ต้องผ่านปัญหาเดียวกัน
Andrew Clear

37

ดังที่ระบุไว้ในปัญหาในโครงการ Roslyn บน GitHubวิธีแก้ปัญหา (ที่ได้ผลสำหรับฉัน) ก็คือการยกเลิกการโหลดและโหลดโครงการใน Visual Studio อีกครั้ง

โฟลเดอร์ "bin \ roslyn" ไม่ได้ถูกสร้างในการสร้างหรือสร้างใหม่จนกว่าฉันจะโหลดโครงการอีกครั้ง


ขอบคุณมันใช้งานได้สำหรับฉัน ปัญหาเกี่ยวกับที่เก็บ dotnet เปิดในปี 2559 และเรายังคงมีปัญหานี้ใน Visual Studio 2019 ฉันไม่อยากจะเชื่อเลยว่ามันเป็นเรื่องจริง!
เฟลิเป้โอริอานี

26

ฉันทำตามขั้นตอนเหล่านี้และทำงานได้อย่างสมบูรณ์

  • ลบโฟลเดอร์ bin และ obj ทั้งหมด
  • ทำความสะอาดโซลูชันและสร้างใหม่
  • เรียกใช้คำสั่งนี้ใน powershell

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


22

หลังจากลองใช้การแก้ไขทั้งหมดโดยไม่มีซิการ์ฉันได้ทำการแก้ไขโดยการอัพเดตแพ็คเกจ Nuget ใน Visual Studios:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

ของฉันคือจาก 1.0.0 ถึง 2.0.0 สำหรับการอ้างอิง (ข้อผิดพลาดจะไม่แสดงอีกต่อไป)


3
นี่มันสำหรับฉันในฐานะ wel แม้แต่ 2.0.0 ต่ำเกินไปสำหรับโครงการของฉัน แต่มันต้องการ 2.0.1
yesman

3
วิธีนี้แก้ไขได้สำหรับฉัน ฉันปรับลดรุ่นที่ต้องแก้ไขปัญหาจากนั้นฉันอัปเดตกลับเป็นเวอร์ชันล่าสุด
Daniel Jackson

1
ฉันทำสิ่งนี้ด้วย ตอนนี้roslynโฟลเดอร์ถูกสร้างขึ้นในเส้นทางออกของฉัน ฉันยังไม่เห็นการอ้างอิง "roslyn" ใน csproj ของฉัน มันอาจจะเป็นว่าTarget Name="CopyRoslyn...เป็นสิ่งที่ VS2015 และไม่จำเป็นต้องใช้ (รุ่น) 2017 ฉันมี น่าสังเกต: ตั้งแต่ฉันอัปเดต DotnetCompilerPlatform ก่อนที่ฉันจะเล่นด้วยการเพิ่มเป้าหมายการคัดลอก (อันที่ฉันพูดถึง) ฉันมี csproj ที่สะอาดกว่า
LosManos

1
อันนี้เพิ่งเกิดขึ้นกับฉัน โพสต์นี้เป็นผู้ช่วยชีวิต ฉันมีข้อความแสดงข้อผิดพลาดเดียวกันซ้ำ ๆ และมันก็มักจะเป็นเหตุผลที่แตกต่างกันโดยสิ้นเชิง!
Brian Knoblauch

19
  1. น้ำยาทำความสะอาด
  2. สร้างโซลูชันขึ้นมาอีกสองขั้นตอนนี้ใช้งานได้สำหรับฉัน

ขอบคุณมันใช้ได้กับฉันเช่นกัน
Joey Phillips

1
โรงงาน ฉันกดโดยไม่ได้ตั้งใจCtrl Cตอนที่ฉันกำลังตรวจสอบสาขาอยู่gitและมันทำให้คนซื้อกลับบ้านหมด git reset --hardไม่ทำงานดังนั้นฉันจึงgit clean -xdfต้องสร้างโครงการใหม่ อย่างไรก็ตามฉันพบข้อผิดพลาดนี้ดังนั้นฉันก็แค่ทำความสะอาดและสร้างโครงการใหม่อีกครั้งและมันก็ใช้ได้สำหรับฉัน
Paul Carlton

15

ผู้จัดการแพคเกจ NuGet

คุณต้องติดตั้ง Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix ถูกสร้างขึ้นโดยเฉพาะสำหรับข้อผิดพลาดนั้น


สิ่งนี้ใช้งานไม่ได้ - ฉันสงสัยว่าแพคเกจนั้นไม่ได้มีไว้เพื่อจุดประสงค์นี้
Drew Miller

ฉันทดสอบกับ VS 2017 และใช้งานได้ดีอาจเป็นปัญหากับเวอร์ชันอื่น
Juan Acosta

11
ฉันไม่ได้ติดตั้งแพ็คเกจสุ่มจากผู้ที่สุ่มด้วย 'dsx' เป็นชื่อเล่น นั่นคือการรักษาความปลอดภัยที่ยิ่งใหญ่ไม่ใช่ ...
Mateusz

1
@Mateusz หรือหนึ่งที่จะแก้ไขปัญหาของฉัน non-APS.NET [sic] โฟลเดอร์โครงสร้าง
Eliasar

14
  • คลิกขวาที่โครงการของคุณและเลือกจัดการแพคเกจ Nuget
  • ค้นหา "Microsoft.CodeDom.Providers.DotNetCompilerPlatform"
  • เพียงอัปเดตเป็นเวอร์ชันที่เก่ากว่าหรือใหม่กว่า (ไม่สำคัญว่าจะเป็นอะไร) จากนั้นอัปเดตกลับเป็นเวอร์ชั่นดั้งเดิมของคุณอีกครั้ง

สิ่งนี้จะติดตั้งการอ้างอิงและไฟล์ทั้งหมดของแพ็คเกจอีกครั้ง (เช่น csc.exe)

Nuget - DotNetCompilerPlatform


นี้แก้ไขให้ฉัน! ขอบคุณ!
Mason

11

ดังนั้นคำตอบของ Rob Cannon นั้นเหมาะสำหรับฉัน แต่ฉันต้องปรับแต่งตัวเลือกไม่กี่อย่าง โดยเฉพาะฉันต้องลบเงื่อนไขในเป้าหมายรวมทั้งเปลี่ยนแอตทริบิวต์ Include เนื่องจาก $ CscToolPath ว่างเปล่าเมื่อโครงการถูกสร้างขึ้นบนบิลด์เซิร์ฟเวอร์ของเรา อยากรู้อยากเห็น $ CscToolPath ไม่ว่างเปล่าเมื่อทำงานในเครื่อง

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" >
  <ItemGroup>
    <RoslynFiles Include="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*" />
  </ItemGroup>
  <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
  <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>

1
พฤติกรรมยิ่งแย่ลง ในพื้นที่ถ้าคุณไปที่โฟลเดอร์แพคเกจของคุณและลบสองโฟลเดอร์Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.nnและสร้างรหัสให้คุณ $ CscToolPath จะว่างเปล่า หากคุณสร้างครั้งที่สองมันจะไม่ว่างเปล่า ปัญหาเกิดขึ้นตลอดเวลาบนเซิร์ฟเวอร์การสร้างของคุณเพราะมันถูกพิจารณาว่าเป็น "การสร้างครั้งแรก" เสมอ รหัสของคุณทำงานได้อย่างสมบูรณ์ แต่ถ้าคุณปรับปรุงMicrosoft.Net.Compilersแพคเกจแล้วคุณจะมีการปรับปรุง.csproj ขอบคุณ.
Julien D.

3
โปรดทราบว่าการแก้ปัญหานี้จะล้มเหลว (หรือจะต้องมีการปรับ) ถ้ารุ่น Microsoft.Net.Compilers เปลี่ยนไป
JanDotNet

ฉันอัปเกรด Microsoft.CodeDom.Providers.DotNetCompilerPlatform แล้วก็สามารถดำเนินการต่อได้
iowatiger08

10

การอัปเดตแพคเกจ nuget ใช้งานได้สำหรับฉันคลิกขวาที่โซลูชัน> จัดการแพคเกจ NuGet สำหรับการแก้ปัญหาและอัปเดตแพ็คเกจทั้งหมดและพิเศษ: Microsoft.Net.Compilers และMicrosoft.CodeDom.Providers.DotNetCompilerPlatform


สิ่งนี้ใช้ได้สำหรับฉันในเวลานี้ ข้อผิดพลาดที่หายไป Roslyn / csc.exe เกิดขึ้นสำหรับฉันอย่างต่อเนื่องและวิธีการแก้ปัญหาที่แตกต่างกันค่อนข้างบ่อย ...
Brian Knoblauch

10

นี่เป็นปัญหาที่ทราบกันดีกับMicrosoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6 การลดระดับเป็น 1.0.5 ได้แก้ไขสิ่งนี้สำหรับฉัน


ถูกต้องแล้ว ฉันพบปัญหานี้ในเวอร์ชัน 1.0.6 เมื่อเผยแพร่ไปยัง Azure เท่านั้น ปรับลดรุ่นเป็น 1.0.5 ผลงาน
Augusto Barreto

ปรับลดรุ่นจาก 2.0.0 เป็น 1.0.5 และใช้งานได้ อย่างไรก็ตามฉันกินแซนด์วิชไก่งวงในเวลานั้นซึ่งบางส่วนอาจเป็นสาเหตุของการแก้ปัญหา ไปคิด
barneymc


9

ตามความคิดเห็นโดย Daniel Neel ด้านบน:

รุ่น 1.0.3 ของ Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget แพ็คเกจทำงานได้สำหรับฉัน แต่รุ่น 1.0.6 ทำให้เกิดข้อผิดพลาดในคำถามนี้

การลดระดับเป็น 1.0.3 แก้ไขปัญหานี้สำหรับฉัน


3
1.0.6 มีข้อบกพร่อง: github.com/aspnet/RoslynCodeDomProvider/issues/13
akatakritos

@akatakritos สิ่งนี้ช่วย ฉันกำลังค้นหาชั่วโมง ขอบคุณทั้งคู่
erincerol

2
1.0.7 ยังคงได้รับผลกระทบในบางสถานการณ์github.com/aspnet/RoslynCodeDomProvider/issues/17
altso

1
1.0.5 เป็นรุ่นล่าสุดที่ใช้งานได้สำหรับฉัน (1.0.6 และ 1.0.7 กำลังสร้างข้อผิดพลาด)
Patrick

กันฉันคือ 1.0.7 และมันไม่ทำงาน 1.0.3 ทำงาน ฉันไม่ได้ลองอะไรที่สูงขึ้นเพราะฉันเพิ่งเสียชั่วโมงสุดท้ายในชีวิตของฉันไปกับปัญหานี้และฉันก็ไม่ได้ยุ่งกับมันอีกต่อไปตอนนี้มันใช้งานได้!
Philip Stratford

9

ในกรณีของฉันฉันมีปัญหาใน Jenkins เมื่อพยายามปรับใช้ใน Octopus โดยมีข้อผิดพลาดดังต่อไปนี้:

MSBUILD : OctoPack error OCT-1676060969: Failed to build the path for '\bin\roslyn\csc.exe' relative to 'T:\workspace\machine.engine\Machine.engine.Test': Invalid URI: The format of the URI could not be determined.. See the inner exception for more details. [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969: System.Exception: Failed to build the path for '\bin\roslyn\csc.exe' relative to 'T:\workspace\machine.engine\Machine.engine.Test': Invalid URI: The format of the URI could not be determined.. See the inner exception for more details. ---> System.UriFormatException: Invalid URI: The format of the URI could not be determined. [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at System.Uri..ctor(String uriString) [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.Util.OctopusPhysicalFileSystem.GetPathRelativeTo(String fullPath, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\Util\OctopusPhysicalFileSystem.cs:line 211 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    --- End of inner exception stack trace --- [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.Util.OctopusPhysicalFileSystem.GetPathRelativeTo(String fullPath, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\Util\OctopusPhysicalFileSystem.cs:line 224 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.CreateOctoPackPackage.AddFiles(XContainer nuSpec, IEnumerable`1 sourceFiles, String sourceBaseDirectory, String targetDirectory, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\CreateOctoPackPackage.cs:line 443 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.CreateOctoPackPackage.Execute() in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\CreateOctoPackPackage.cs:line 190 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
Done Building Project "T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj" (default targets) -- FAILED

สาเหตุ

หลังจากใช้เวลาสักครู่ฉันก็ใช้ส่วนประกอบที่พัฒนาภายในซึ่งกำลังใช้งานMicrosoft.Net.Compilersอยู่ เหตุผลที่องค์ประกอบภายในใช้Microsoft.Net.Compilersคือการเอาชนะปัญหานี้ ( C #: การรวบรวมนิพจน์ที่ไม่ถูกต้อง ) และแก้ไขด้วยวิธีนี้ ( วิธีใช้ C # 7 กับ Visual Studio 2015 ) ผลลัพธ์นี้เมื่อฉันติดตั้งคอมโพเนนต์ในโปรแกรมหลักการMicrosoft.Net.Compilersเพิ่มจะถูกองค์ประกอบเองโดยอัตโนมัติ

สารละลาย

งานของฉันคือการถอนการติดตั้งต่อไปนี้จากส่วนประกอบภายในของเราโดย (ทำตาม @malikKhalil คำตอบ)

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers

และเลือกคอมไพเลอร์ C # 7 ในเจนกินส์แทนที่จะเป็น C # 6 และสร้างใหม่นี่คือเพื่อให้แน่ใจว่าทุกอย่างทำงานและสร้างอย่างถูกต้อง

ในที่สุดโปรแกรมหลักของฉันฉันพยายามอัปเดตองค์ประกอบภายในของฉัน และทุกสิ่งมากกว่าสร้างอีกครั้ง มันสร้างขึ้นโดยไม่มีปัญหาหรือปัญหาใด ๆ


8

ในกรณีของฉันฉันแค่ต้องไปที่ไดเรกทอรีช่องเก็บใน Visual Studio Solution Explorer (โครงการแอปพลิเคชันเว็บ) และรวมโครงการ Roslyn โดยตรง โดยคลิกขวาที่โฟลเดอร์และเลือกรวมในโครงการ และเช็คอินโซลูชันอีกครั้งเพื่อทริกเกอร์กระบวนการบิลด์

โฟลเดอร์โรสลินไม่ได้ถูกรวมไว้โดยค่าเริ่มต้น


7

การอัปเกรดMicrosoft.CodeDom.Providers.DotNetCompilerPlatformจาก 1.0.0 เป็น 1.0.1 ได้แก้ไขสิ่งนี้สำหรับฉัน


6

เปิดไฟล์โครงการและลบการอ้างอิงทั้งหมดด้วย Import Project = ".. \ packages \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ....

เปิด web.config และลบแอตทริบิวต์ system.codedom compilers ทั้งหมด


6

ดังที่กล่าวไว้แล้วโดย/programming/32780315#34391473การแก้ไขอย่างรวดเร็วคือการใช้การจัดการแพคเกจ Tools> Nuget Package Manager> Package Manager Consoleเพื่อให้ทำงาน

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

Packet Manager Console - วิธีเปิด

แต่โซลูชันทางเลือก (ซึ่งจะสร้างแพ็คเกจของคุณโดยอัตโนมัติและเงียบ ๆ หากไม่มี) คือการลบแอตทริบิวต์ของWeb.configไฟล์โครงการของคุณ
( Web.configอยู่ในไดเรกทอรีเดียวกับ.csprojไฟล์ของคุณ)

เปิดWeb.configไฟล์ในโปรแกรมแก้ไขข้อความ (หรือภายใน Visual Studio)
- ในแท็กconfiguration> system.codedom> compilers> compiler language="c#;cs;csharp", สมบูรณ์ลบtypeแอตทริบิวต์

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- ... -->
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
</configuration>

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoftในระยะสั้นลบบรรทัดที่เริ่มต้นด้วย

(สมมุติว่าการแก้ไขเดียวกันใช้ได้กับ Visual Basic และ Csharp แต่ฉันไม่ได้ลอง)

Visual Studio จะดูแลส่วนที่เหลือ ไม่มีอีกServer Error in '/' Applicationแล้ว

ในโค้ดตัวอย่างที่ผมให้ไว้ในไฟล์ซิปข้างต้นตอนนี้คุณจะได้รับHTTP Error 403 เมื่อคุณกด+CtrlF5

HTTP Error 403.14 - ถูกห้าม

ลองเปลี่ยนในเว็บเบราว์เซอร์ของคุณด้วยhttp://localhost:64195 ขณะนี้เว็บ API แสดงผลตามที่ควรจะเป็น:http://localhost:64195/api/products

API เว็บที่มีผลิตภัณฑ์

เป็นการยั่วยุฉันพยายามลบpackageไดเรกทอรีทั้งหมดของโซลูชัน Visual Studio ของฉัน
มันถูกสร้างขึ้นใหม่โดยอัตโนมัติและเงียบทันทีที่ฉันสร้างขึ้นใหม่


สุดท้าย แต่ไม่ท้ายสุดนี่คือรหัสที่ทำให้เกิดข้อผิดพลาด: http://schulze.000webhostapp.com/vs/SrvrErr-reproduce.zip (มาจาก https://github.com/aspnet/AspNetDocs/tree/master/aspnet / web-api / ภาพรวม / ขั้นสูง / การโทร -a-web-api-a-net-client / ตัวอย่าง / เซิร์ฟเวอร์ / ProductsApp )

เซิร์ฟเวอร์ผิดพลาด


6

ในกรณีของฉันโดยเพียงแค่การลบทุกอย่างภายในโฟลเดอร์ช่องเก็บและการคอมไพล์ใหม่ได้ทำงานทั้งหมดสำหรับฉัน


2
ฉันคิดว่านี่ง่ายและมีประสิทธิภาพมากกว่า ฉันมักจะได้รับข้อผิดพลาดนี้หลังจากโคลนโครงการจากพื้นที่เก็บข้อมูลลงใน computir ใหม่
Jonathan Ortega

หลังจากลองสิ่งนี้ฉันได้รับ 403 สิ่งที่ต้องห้ามจาก IIS Express เมื่อทำงานในโปรแกรมดีบั๊ก การเริ่มต้นใหม่ Visual Studio ไม่ได้ช่วยอย่างใดอย่างหนึ่ง แต่การเริ่มระบบ Windows ใหม่
Florian Winter

6

ฉันยังมีปัญหาเดียวกันในขณะที่ดำเนินโครงการ นี่คือขั้นตอนที่ฉันทำตาม

  1. คลิกขวาในโซลูชัน
  2. เลือกโซลูชันที่สะอาด
  3. หลังจากล้างสำเร็จแล้วให้สร้างโครงการของคุณอีกครั้ง
  4. เรียกใช้โครงการอีกครั้ง

ครั้งนี้ฉันไม่เห็นข้อผิดพลาดเดียวกัน ทำงานได้ตามที่คาดไว้


เพื่อนร่วมงานรายงานว่าการอัปเดตแพคเกจ NuGet จากคอนโซลทำงานได้ แต่ก็สามารถใช้งานได้โดยไม่ต้องใช้คำสั่งใด ๆ คำตอบที่ฉันเลือก
tsemer

5

หากคุณเพิ่ม ASPNETCOMPILER เพื่อรวบรวมมุมมองมีดโกนของคุณใน MVC เช่นเดียวกับคำถาม StackOverflowจากนั้นเปลี่ยน PhysicalPath เป็นแพคเกจกล่องข้อมูล Roslyn (โดยทั่วไปจะชี้ผ่านตัวแปร$ CscToolPath ):

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(CscToolPath)" />


5

ปัญหาของเทมเพลต VS2015 เริ่มต้นคือคอมไพเลอร์ไม่ได้คัดลอกไปยัง{outdir}_PublishedWebsites\tfr\bin\roslyn\ไดเรกทอรี แต่เป็น{outdir}\roslyn\ไดเรกทอรี สิ่งนี้อาจแตกต่างจากสภาพแวดล้อมในพื้นที่ของคุณตั้งแต่AppHarborสร้างแอปโดยใช้ไดเรกทอรีผลลัพธ์แทนที่จะสร้างโซลูชัน "แบบแทนที่"

หากต้องการแก้ไขให้เพิ่มสิ่งต่อไปนี้ไปยังจุดสิ้นสุด.csprojไฟล์ทันทีหลังบล็อก xml<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">...</Target>

<PropertyGroup>
  <PostBuildEvent>
    if not exist "$(WebProjectOutputDir)\bin\Roslyn" md "$(WebProjectOutputDir)\bin\Roslyn"
    start /MIN xcopy /s /y /R "$(OutDir)roslyn\*.*" "$(WebProjectOutputDir)\bin\Roslyn"
  </PostBuildEvent>
</PropertyGroup>

การอ้างอิง: https://support.appharbor.com/discussions/problems/78633-cant-build-aspnet-mvc-project-generated-from-vstudio-2015-enterprise


1
ตัวเลือก / d คัดลอกเฉพาะไฟล์ที่ใหม่กว่า (ย่อมาจาก "date") โปรดจำไว้ว่าการปรับใช้กับระบบคลาวด์ / สีฟ้าซึ่งอาจมีเวลาอยู่ข้างหลัง / ต่อหน้าเวลาท้องถิ่น
สูงสุด

4

ในกรณีของฉันคล้ายกับ Basim มีแพ็คเกจ NuGet ที่บอกคอมไพเลอร์ว่าเราต้องการ C # 6 ซึ่งเราไม่ได้ทำ

เราต้องลบแพ็กเกจ NuGet Microsoft.CodeDom.Providers.DotNetCompilerPlatformออกแล้ว:

  1. <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" /> จากไฟล์ packages.config
  2. <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>

ในsystem.codedomโหนดคุณจะเห็นว่าทำไมมันถึงเกิดขึ้นในโรสลิน:compilerOptions="/langversion:6


1
สิ่งที่ฉันต้องทำก็คือถอนการติดตั้งแพคเกจ NuGet "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" และแก้ไขได้สำหรับฉัน (โครงการเป้าหมายของฉัน. NET 4.5.2)
BlueSky

1
สิ่งนี้ใช้ได้สำหรับฉัน คุณจะต้องลบ Microsoft.Net.Compilers เนื่องจากไม่มีเหตุผลใดที่จะทำให้การพึ่งพาเพิ่มเติมนี้มีอยู่
เรียนรู้เสมอ

4

ลบโฟลเดอร์ Bin ใน explorer โซลูชันของคุณและสร้างโซลูชันอีกครั้ง ที่จะแก้ปัญหาที่เกิดขึ้น


ขอบคุณ! ที่ทำงานให้ฉันด้วย นอกจากนั้นฉันได้อัปเดตแพคเกจนักเก็ตทั้งหมดของฉัน
Andre Kraemer

4

ฉันมีปัญหาเดียวกันเมื่อติดตั้งแอปพลิเคชันของฉันบนเซิร์ฟเวอร์เมื่อทุกอย่างทำงานได้อย่างสมบูรณ์บน localhost

ไม่มีวิธีแก้ปัญหาเหล่านี้ที่แจ้งเตือนฉันมีข้อผิดพลาดเหมือนเดิมเสมอ:

Could not find a part of the path 'C:\inetpub\wwwroot\myApp\bin\roslyn\csc.exe'

ฉันลงเอยด้วยการทำสิ่งนี้:

  • ในโครงการติดตั้งของฉัน, คลิกขวา, ดู> ระบบไฟล์
  • สร้างbin/roslynโฟลเดอร์
  • เลือกเพิ่ม> ไฟล์และเพิ่มไฟล์ทั้งหมดจาก packages\Microsoft.Net.Compilers.1.3.2\tools

นี่เป็นการแก้ไขปัญหาของฉัน


4

รีบูท Windows

นี่เป็นทางออกเดียวที่ทำงานให้ฉันหลังจากลองสร้างใหม่ลบเนื้อหาของbinและสร้างใหม่เริ่มต้น Visual Studio

นี่เป็นอีกตัวอย่างหนึ่งของการสร้างเครื่องมือ C # /. NET ที่น่ากลัว

ฉันคิดว่า (หลังจากอ่านคำตอบจำนวนมาก) ข้อสรุปโดยรวมคือสาเหตุและวิธีแก้ปัญหาของปัญหานี้ขึ้นอยู่กับการตั้งค่าและโครงการดังนั้นหากคำตอบข้อหนึ่งไม่ได้ผลให้ลองอีกครั้ง ลองวิธีการที่ไม่ล่วงล้ำ / ทำลายเช่นการรีสตาร์ท Visual Studio, การรีบูต, การสร้างใหม่, ฯลฯ เป็นครั้งแรกก่อนที่จะเล่นกับแพ็คเกจ NuGet หรือติดตั้งเครื่องมือพัฒนาใหม่ โชคดี!

(หมายเหตุ: การใช้ Visual Studio 2019 และไฟล์โครงการถูกสร้างขึ้นครั้งแรกใน Visual Studio 2015 บางทีนี่อาจช่วยให้ใครบางคนตรวจสอบปัญหา)

(แก้ไข: สิ่งนี้อาจเกิดจากการไม่รีบูตหลังจากติดตั้ง / แก้ไขการติดตั้ง Visual Studio หรือการปรับปรุง Visual Studio เมื่อโปรแกรมติดตั้งแจ้งให้รีบูต?)


3

ฉันมีเว็บโปรเจ็กต์ที่ไม่มีไฟล์ csproj และวิธีแก้ปัญหาที่กล่าวถึงที่นี่ไม่ได้ผลสำหรับฉัน

การเปลี่ยนกรอบงาน. NET เป้าหมายติดตั้งแพคเกจใหม่ ( Update-Package -reinstall) จากนั้นสร้างโครงการที่เหมาะกับฉัน คุณสามารถเปลี่ยนเฟรมเวิร์กเป้าหมายได้หลังการดำเนินการนี้ (ให้ติดตั้งแพ็คเกจ nuget อีกครั้งหลังจากนั้น)


นี่คือ "โครงการเว็บไซต์" ฉันใช้คำสั่งนี้เพื่อติดตั้งเพียงหนึ่งแพคเกจ:update-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -reinstall
GarDavis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.