Tidak dapat menemukan bagian dari jalur… bin \ roslyn \ csc.exe

Sep 25 2015

Saya mencoba untuk menjalankan proyek Asp.net MVC diambil dari kontrol sumber TFS. Saya telah menambahkan semua referensi perakitan dan saya dapat membangun dan mengkompilasi dengan sukses tanpa kesalahan atau peringatan.

Tetapi saya mendapatkan kesalahan berikut di browser:

Tidak dapat menemukan bagian dari jalur 'C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ roslyn \ csc.exe'.

Berikut adalah tangkapan layar lengkap dari halaman kesalahan.

Setelah beberapa hari melakukan penelitian, saya memahami bahwa Roslyn adalah platform kompiler .Net yang menawarkan fitur kompilasi lanjutan. Namun, saya tidak mengerti mengapa build saya mencoba menemukan \ bin \ roslyn \ csc.exe karena saya tidak mengonfigurasi apa pun yang terkait dengan Roslyn atau saya bermaksud menggunakan Roslyn dalam proyek saya.

Jawaban

481 Mitchell Sep 25 2015 at 17:44

Masalah dengan template VS2015 default adalah bahwa compiler tidak benar-benar disalin ke direktori tfr \ bin \ roslyn \, melainkan direktori {outdir} \ roslyn \

Tambahkan kode ini di file .csproj Anda:

<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>
1361 andy250 Dec 21 2015 at 15:23

TL; DR

jalankan ini di Package Manager Console:

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

Informasi lebih lanjut

Masalah ini tidak terkait dengan Visual Studio itu sendiri, jadi jawaban yang menyarankan menambahkan langkah-langkah pembuatan untuk menyalin file lebih merupakan solusi. Sama dengan menambahkan binari kompilator secara manual ke proyek.

Kompiler Roslyn berasal dari paket NuGet dan ada / ada bug di beberapa versi paket itu (saya tidak tahu persis yang mana). Solusinya adalah menginstal ulang / meningkatkan paket itu ke versi bebas bug. Awalnya sebelum saya menulis jawabannya pada tahun 2015 saya memperbaikinya dengan menginstal paket berikut di versi tertentu:

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

Kemudian saya melihat ke .csproj dan memastikan bahwa path ke paket sudah benar (dalam kasus saya .. \ .. \ packages \ *. *) Di dalam tag <ImportProject>di atas dan <Target>dengan nama "EnsureNuGetPackageBuildImports" di bagian bawah. Ini ada di MVC 5 dan .NET Framework 4.5.2.

180 MalikKhalil Jul 30 2016 at 05:20

Build Anda mencoba mencari \bin\roslyn\csc.exekarena paket berikut telah ditambahkan ke proyek Anda. Tinjau saja packages.configfile Anda, Anda dapat memiliki keduanya di sana

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

Apa itu Roslyn dan Siapa yang menambahkannya (paket) dalam proyek: Jika Anda menggunakan .net Framework 4.5.2 untuk membuat proyek menggunakan VS2015, Anda mungkin telah memperhatikan bahwa templat proyek menggunakan Roslyn secara default. Sebenarnya Roslyn adalah salah satu compiler open source untuk bahasa .NET dari Microsoft.

Mengapa kami harus menghapus Roslyn: Jika proyek Anda memiliki referensi Roslyn dan Anda tertarik untuk menyebarkannya tanpa server, Anda akan mendapatkan kesalahan yang tidak diinginkan di situs web karena banyak penyedia hosting masih belum meningkatkan server mereka dan karenanya tidak mendukung Roslyn. Untuk mengatasi masalah ini, Anda perlu menghapus kompiler Roslyn dari template proyek.

Jika Anda tidak tertarik menggunakan Roslyn, ikuti langkah-langkah di bawah ini untuk menghapusnya

1. Hapus paket NuGet, gunakan perintah berikut dari Nuget Package Console

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

2. Setelah Anda melakukan ini, file web.config Anda akan diperbarui secara otomatis. Jika tidak, cari kode di bawah ini dalam web.configfile dan jika ditemukan, hapus bagian kode ini.

<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>
164 pipedreambomb Jan 05 2017 at 18:55

Pembersihan dan pembangunan kembali berhasil untuk saya!

61 RobCannon Oct 08 2015 at 06:49

Berikut adalah cara yang lebih MSBuild untuk melakukan ini.

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

Tetapi saya perhatikan bahwa file roslyn juga ada di direktori bin saya (bukan di folder). Namun, aplikasi tersebut tampaknya berfungsi.

40 ChristianDavén May 03 2019 at 14:23

Sebagaimana dicatat dalam masalah dalam proyek Roslyn di GitHub , solusi (yang berhasil untuk saya) adalah dengan membongkar dan memuat ulang proyek di Visual Studio.

Folder "bin \ roslyn" tidak dibuat saat dibangun atau dibangun kembali sampai saya memuat ulang proyek.

32 MasoudDarvishian Jan 24 2019 at 14:19

Saya mengikuti langkah-langkah ini dan berhasil dengan sempurna

  • Hapus semua folder bin dan obj
  • Solusi bersih dan bangun kembali
  • Jalankan perintah ini di PowerShell

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

24 Narendra Aug 04 2017 at 13:25

Saya juga mengalami masalah yang sama saat menjalankan proyek. Berikut langkah-langkah yang saya ikuti.

  1. Klik kanan dalam solusi
  2. pilih solusi bersih
  3. Setelah pembersihan berhasil, kembali membangun proyek Anda
  4. Jalankan proyek lagi

Kali ini saya tidak melihat kesalahan yang sama. Ini bekerja seperti yang diharapkan.

23 josh.thomson Jul 12 2018 at 21:34

Setelah mencoba semua perbaikan tanpa cerutu saya memperbaikinya dengan memperbarui Paket Nuget ini di Visual Studios:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Milik saya adalah dari 1.0.0 hingga 2.0.0 untuk referensi (Kesalahan tidak lagi terlihat)

23 SunilJohnson Jun 01 2020 at 22:55

Terlambat untuk sebuah jawaban tapi tetap posting memetikan membantu siapa saja.
Mengikuti langkah-langkah di bawah ini memperbaiki kesalahan untuk saya:

  1. hapus folder paket
  2. buka VS
  3. membangun kembali
  4. perhatikan bahwa paket NuGet dipulihkan, tetapi bin \ roslyn tidak dibuat
  5. membongkar proyek
  6. muat ulang proyek
  7. membangun kembali
  8. perhatikan bahwa bin \ roslyn telah dibuat sekarang.
20 nischa Apr 03 2019 at 01:42
  1. Solusi Bersih
  2. Rebuild Solution, Kedua langkah ini berhasil untuk saya.
15 AdrianBerca Mar 19 2018 at 20:57

Anda perlu menginstal Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix, dibuat khusus untuk kesalahan itu

15 Henke Oct 04 2019 at 21:45

Seperti yang telah dicatat oleh https://stackoverflow.com/questions/32780315#34391473 , perbaikan cepat adalah dengan menggunakan manajer paket, Tools> Nuget Package Manager> Package Manager Console, untuk menjalankan

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

Tetapi solusi alternatif (yang secara otomatis dan diam-diam membuat ulang paket Anda jika hilang) adalah dengan menghapus atribut Web.configfile proyek Anda .
( Web.configdi direktori yang sama dengan .csprojfile Anda .)

Buka Web.configfile di editor teks (atau di dalam Visual Studio).
- Di tag configuration> system.codedom> compilers> compiler language="c#;cs;csharp", sepenuhnya menghapus typeatribut.

<?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>

Singkatnya, hapus garis yang dimulai dengan type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.

(Agaknya, perbaikan yang sama berfungsi untuk Visual Basic serta untuk Csharp, tetapi saya belum mencobanya.)

Visual Studio akan mengurus sisanya. Tidak lebih Server Error in '/' Application.

Dalam contoh kode yang saya berikan di file zip di atas, Anda sekarang akan mendapatkan HTTP Error 403 ketika menekan Ctrl+ F5.

Coba ganti http://localhost:64195di browser web Anda dengan http://localhost:64195/api/products.
API web sekarang ditampilkan sebagaimana mestinya:

Sebagai provokasi, saya mencoba menghapus seluruh packagedirektori solusi Visual Studio saya.
Itu secara otomatis dan diam-diam diciptakan kembali segera setelah saya (kembali) membuatnya.


Last but not least, berikut adalah kode yang mereproduksi kesalahan: http://schulze.000webhostapp.com/vs/SrvrErr-reproduce.zip (Aslinya dari https://github.com/aspnet/AspNetDocs/tree/master/aspnet / web-api / overview / advanced / calling-a-web-api-from-a-net-client / sample / server / ProductsApp )

14 Bojan Feb 26 2019 at 22:55
  • Klik kanan pada proyek Anda dan pilih Kelola Paket Nuget
  • Temukan "Microsoft.CodeDom.Providers.DotNetCompilerPlatform"
  • Cukup Perbarui ke versi yang lebih lama atau lebih baru (tidak masalah yang mana), lalu perbarui lagi ke versi asli Anda.

Ini menginstal ulang semua dependensi dan file paket (seperti csc.exe)

13 ShadiNamrouti Jan 12 2020 at 22:22

Untuk VS 2019 hapus node berikut sepenuhnya:

<system.codedom>
</system.codedom>
11 jonnybot Jan 16 2016 at 02:58

Jadi, jawaban Rob Cannon pada dasarnya berhasil untuk saya, tetapi saya harus mengubah beberapa opsi. Secara khusus, saya harus menghapus kondisi pada target, serta mengubah atribut Include, karena $ CscToolPath kosong ketika proyek sedang dibangun di server build kami. Anehnya, $ CscToolPath TIDAK kosong saat dijalankan secara lokal.

<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>
11 jrummell Aug 11 2017 at 20:25

Ini adalah masalah umum pada Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6. Menurunkan versi ke 1.0.5 memperbaiki ini untuk saya.

10 hichamkazan Nov 30 2016 at 05:52

Memperbarui paket nuget bekerja untuk saya Klik kanan pada solusi> Kelola paket NuGet untuk solusi dan perbarui semua paket dan khususnya: Microsoft.Net.Compilers dan Microsoft.CodeDom.Providers.DotNetCompilerPlatform

9 JasonCoyne Aug 09 2017 at 22:43

Menurut komentar Daniel Neel di atas:

versi 1.0.3 dari paket Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget berfungsi untuk saya, tetapi versi 1.0.6 menyebabkan kesalahan dalam pertanyaan ini

Menurunkan versi ke 1.0.3 menyelesaikan masalah ini untuk saya.

9 maytham-ɯɐɥʇʎɐɯ Feb 02 2018 at 18:30

Dalam kasus saya, saya memiliki masalah di Jenkins ketika mencoba menerapkannya di Octopus dengan kesalahan berikut:

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

Sebab

Setelah menghabiskan beberapa waktu, saya menggunakan komponen internal yang dikembangkan yang digunakan Microsoft.Net.Compilers. Alasan komponen internal menggunakan Microsoft.Net.Compilersadalah untuk mengatasi masalah ini ( C #: membuang kompilasi ekspresi tidak valid ) dan diselesaikan dengan cara ini ( Bagaimana cara menggunakan C # 7 dengan Visual Studio 2015? ). Hasilnya, ketika saya menginstal komponen pada program utama, Microsoft.Net.Compilersditambahkan secara otomatis.

Larutan

Pekerjaan saya adalah, hapus instalan mengikuti dari komponen internal kami dengan (mengikuti jawaban @malikKhalil)

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

Dan pilih kompiler C # 7 di Jenkins daripada C # 6 dan bangun kembali, ini untuk memastikan semuanya bekerja dan membangun dengan benar.

Dari akhirnya di program utama saya, saya mencoba memperbarui komponen internal saya. Dan segalanya lebih dari membangun lagi. Itu telah dibangun tanpa masalah atau masalah.

8 MartijnvanHalen Nov 07 2015 at 01:10

Dalam kasus saya, saya hanya perlu pergi ke direktori bin di Visual Studio Solution Explorer (proyek aplikasi web) dan memasukkan proyek roslyn secara langsung. Dengan mengklik kanan folder dan memilih Include In Project. Dan periksa solusinya lagi untuk memicu proses build.

Folder roslyn tidak disertakan secara default.

8 JuanMartí May 10 2019 at 03:26

Dalam kasus saya dengan hanya Menghapus semua yang ada di dalam folder bin dan mengkompilasi ulang melakukan semua pekerjaan untuk saya.

8 Ben Aug 14 2016 at 04:28

Mengupgrade Microsoft.CodeDom.Providers.DotNetCompilerPlatformdari 1.0.0 ke 1.0.1 memperbaiki ini untuk saya.

6 AnrijsVītoliņš May 03 2016 at 17:08

Jika Anda menambahkan ASPNETCOMPILER untuk mengompilasi tampilan Razor Anda di MVC, seperti dalam pertanyaan StackOverflow ini , kemudian ubah PhysicalPath ke tempat di mana paket nuget Roslyn berada (biasanya diarahkan melalui variabel $ CscToolPath ):

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

6 user6326076 May 12 2016 at 21:21

Buka file proyek dan hapus semua referensi dengan Import Project = ".. \ packages \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ....

Buka web.config dan hapus semua atribut penyusun system.codedom

6 Korayem Apr 04 2016 at 21:54

Masalah dengan template VS2015 default adalah bahwa compiler sebenarnya tidak disalin ke {outdir}_PublishedWebsites\tfr\bin\roslyn\direktori, melainkan ke {outdir}\roslyn\direktori. Ini mungkin berbeda dari lingkungan lokal Anda karena AppHarbormembuat aplikasi menggunakan direktori keluaran daripada membuat solusi "di tempat".

Untuk memperbaikinya, tambahkan baris berikut di bagian akhir .csprojfile tepat setelah blok 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>

Referensi: https://support.appharbor.com/discussions/problems/78633-cant-build-aspnet-mvc-project-generated-from-vstudio-2015-enterprise

5 user1903050 Dec 16 2016 at 22:51

Hapus folder Bin di penjelajah solusi Anda dan Bangun solusi lagi. Itu akan menyelesaikan masalah

4 MarkC. Feb 18 2016 at 21:15

Dalam kasus saya, mirip dengan Basim, ada paket NuGet yang memberi tahu kompiler bahwa kami membutuhkan C # 6, padahal tidak.

Kami harus menghapus paket NuGet Microsoft.CodeDom.Providers.DotNetCompilerPlatformyang kemudian menghapus:

  1. <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" /> dari file 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>

Di system.codedomnode, Anda dapat melihat mengapa itu membawa roslyn:compilerOptions="/langversion:6

4 AlexandreHamon Feb 13 2017 at 21:36

Saya memiliki masalah yang sama ketika menginstal aplikasi saya di server ketika semuanya bekerja dengan sempurna di localhost.

Tak satu pun dari solusi ini berfungsi, saya selalu mengalami kesalahan yang sama:

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

Saya akhirnya melakukan ini:

  • pada proyek penyiapan saya, klik kanan, lihat> sistem file
  • buat bin/roslynfolder
  • pilih tambah> file dan tambahkan semua file dari packages\Microsoft.Net.Compilers.1.3.2\tools

Ini memecahkan masalah saya.

4 FlorianWinter Jul 01 2019 at 20:41

Mulai ulang Windows.

Ini adalah satu-satunya solusi yang bekerja untuk saya setelah mencoba membangun kembali, menghapus konten bindan membangun kembali, mulai ulang Visual Studio.

Itu adalah contoh lain dari betapa buruknya alat pembuat C # / .NET.

Saya pikir (setelah membaca banyak jawaban), kesimpulan keseluruhan adalah bahwa penyebab dan solusi dari masalah ini sangat bergantung pada pengaturan dan proyek, jadi jika satu jawaban tidak berhasil, coba yang lain. Coba solusi non-intrusif / destruktif, seperti memulai ulang Visual Studio, me-reboot, membangun kembali, dll., PERTAMA, sebelum mengotak-atik paket NuGet atau menginstal ulang alat pengembangan. Semoga berhasil!

(CATATAN: Menggunakan Visual Studio 2019, dan file proyek awalnya dibuat di Visual Studio 2015. Mungkin ini membantu seseorang menyelidiki masalah)

(EDIT: Mungkinkah ini disebabkan oleh tidak me-reboot setelah menginstal / memodifikasi penginstalan Visual Studio atau memperbarui Visual Studio ketika penginstal meminta untuk reboot?)