it-swarm.it

Impossibile trovare una parte del percorso ... bin\roslyn\csc.exe

Sto cercando di eseguire il progetto ASP.net MVC recuperato dal controllo del codice sorgente TFS. Ho aggiunto tutti i riferimenti all'assembly e sono in grado di compilare e compilare correttamente senza errori o avvisi.

Ma ottengo il seguente errore nel browser:

Impossibile trovare una parte del percorso 'C:\B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\Roslyn\csc.exe'.

Ecco uno screenshot completo della pagina di errore.

 enter image description here

Dopo alcuni giorni di ricerca, ho capito che Roslyn è la piattaforma di compilazione .Net che offre funzionalità di compilazione avanzate. Tuttavia, non capisco perché la mia build stia cercando di trovare\bin\roslyn\csc.exe perché non ho configurato nulla relativo a Roslyn né intendo usare Roslyn nel mio progetto.

382
Eyad

Il problema con i modelli VS2015 predefiniti è che il compilatore non viene effettivamente copiato nella directory tfr\bin\roslyn \, ma piuttosto nella directory {outdir}\roslyn \

Aggiungi questo codice nel tuo file .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>
209
Mitchell

Nel mio caso la soluzione era di reinstallare/aggiornare i pacchetti Nuget:

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

Poi ho esaminato .csproj e ho verificato che i percorsi dei pacchetti fossero corretti (nel mio caso ..\..\packages\*. *) All'interno dei tag <ImportProject> in alto e in <Target> con il nome "EnsureNuGetPackageBuildImports" in basso. Questo è su MVC 5 e .NET Framework 4.5.2.

Risposta breve - esegui questo nella console di Gestione pacchetti:

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

475
andy250

La tua build sta cercando di trovare \bin\roslyn\csc.exe perché i seguenti pacchetti sono stati aggiunti nel tuo progetto. Riesamina il tuo file packages.config, puoi averli entrambi lì

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

Cosa sono Roslyn e chi li ha aggiunti (pacchetti) nel progetto: Se stai usando .net Framework 4.5.2 per creare progetti usando VS2015, potresti aver notato che i modelli di progetto usano Roslyn per impostazione predefinita. In realtà Roslyn è uno di open-source compilatori per linguaggi .NET di Microsoft.

Perché dovremmo eliminare Roslyn: Se il tuo progetto ha riferimenti a Roslyn e sei interessato alla distribuzione nessun server, si avranno errori indesiderati sul sito web come molti i provider di hosting non hanno ancora aggiornato i loro server e quindi fanno non supporta Roslyn.Per risolvere questo problema, è necessario rimuovere il Compilatore Roslyn dal modello di progetto.

se non ti interessa usare Roslyn,segui i passaggi qui sotto per eliminarlo

1. Rimuovere i pacchetti Nuget, utilizzare i seguenti comandi da Nuget Package Console 

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

2. Dopo averlo fatto, il tuo file web.config dovrebbe essere aggiornato automaticamente. Se non lo è, cerca il codice seguente nel file web.config e, se viene trovato, cancella questo pezzo di codice.

<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>
137
Malik Khalil

Ecco un altro modo MSBuild per farlo. 

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

Ma noto che i file di Roslyn sono anche nella mia directory bin (non in una cartella). L'app sembra funzionare, però.

54
Rob Cannon

Una pulizia e ricostruzione ha funzionato per me!

Modifica: i commentatori dicono che il passaggio pulito non è necessario. Puoi semplicemente ricostruire.

48
pipedreambomb

NuGet Package Manager

È necessario installare Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix, È stato creato appositamente per quell'errore

15
Adrian Berca

Quindi, La risposta di Rob Cannon essenzialmente ha funzionato per me, ma ho dovuto ritoccare una manciata di opzioni. Nello specifico, ho dovuto rimuovere la condizione sul target, nonché modificare l'attributo Include, poiché $ CscToolPath era vuoto quando il progetto è stato costruito sul nostro server di build. Curiosamente, $ CscToolPath NON era vuoto durante l'esecuzione locale.

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

Dopo aver provato tutte le correzioni senza sigaro l'ho risolto aggiornando questo pacchetto Nuget in Visual Studios:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Il mio era da 1.0.0 a 2.0.0 come riferimento (l'errore non viene più visualizzato)

11
josh.thomson

Questo è un problema noto con Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6. Il downgrade a 1.0.5 ha risolto questo problema per me.

9
jrummell

Per un commento di Daniel Neel sopra: 

versione 1.0.3 del pacchetto Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget funziona per me, ma la versione 1.0.6 causa l'errore in questa domanda

Il downgrade a 1.0.3 ha risolto il problema per me. 

8
Jason Coyne

Nel mio caso avevo solo bisogno di andare nella directory bin in Visual Studio Solution Explorer (progetto di applicazione web) e includere direttamente il progetto roslyn. Facendo clic con il tasto destro sulla cartella e selezionando Includi nel progetto. E ricontrolla la soluzione per attivare il processo di compilazione.

La cartella roslyn non è stata inclusa per impostazione predefinita.

8

L'aggiornamento dei pacchetti di nuget ha funzionato per me Fare clic con il tasto destro del mouse sulla soluzione> Gestire i pacchetti NuGet per la soluzione E aggiornare tutti i pacchetti e in particolare: Microsoft.Net.Compilers E Microsoft .CodeDom.Providers.DotNetCompilerPlatform

8
hichamkazan

Ho seguito questi passaggi e ha funzionato perfettamente

  • Elimina tutte le cartelle bin e obj 
  • Pulire la soluzione e ricostruire
  • Esegui questo comando in PowerShell

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

6

Nel mio caso ho avuto un problema in Jenkins quando ha provato a distribuirlo in Octopus con il seguente errore:

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

Causa

Dopo aver trascorso un po 'di tempo, stavo usando un componente sviluppato internamente che utilizzava Microsoft.Net.Compilers. Il motivo per cui il componente interno stava usando Microsoft.Net.Compilers era di ovviare a questo problema ( C #: genera la compilazione di espressioni non valide ) ed è stato risolto in questo modo ( Come usare c # 7 con Visual Studio 2015? ). Questo risultato, quando ho installato il competente sul programma principale, il Microsoft.Net.Compilers viene aggiunto automaticamente.

Soluzione

Il mio lavoro era, disinstallare seguendo dal nostro componente interno (seguendo la risposta @malikKhalil)

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

E ho scelto il compilatore C # 7 in Jenkins invece che in C # 6 e ricostruito, questo per garantire che tutto funzioni e si sviluppi correttamente.

Finalmente nel mio programma principale ho provato ad aggiornare il mio componente interno. E tutto che ricostruire. Ha costruito senza problemi o problemi.

Aprire il file di progetto e remove tutti i riferimenti con Import Project = "..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ....

Apri web.config e remove tutti gli attributi del compilatore system.codedom

6
user6326076

Il problema con i modelli VS2015 predefiniti è che il compilatore non viene effettivamente copiato nella directory {outdir}_PublishedWebsites\tfr\bin\roslyn\, ma piuttosto nella directory {outdir}\roslyn\. Questo è probabilmente diverso dal tuo ambiente locale poiché AppHarbor crea app utilizzando una directory di output invece di creare la soluzione "sul posto".

Per risolvere il problema, aggiungi quanto segue alla fine del file .csproj subito dopo il blocco 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>

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

5
Korayem

Se stavi aggiungendo ASPNETCOMPILER per compilare le tue viste Razor in MVC, come in questa domanda StackOverflow , quindi modifica PhysicalPath per posizionare il punto in cui si trova il pacchetto nuget di Roslyn (solitamente indicato tramite la variabile $ CscToolPath):

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

5

L'aggiornamento di Microsoft.CodeDom.Providers.DotNetCompilerPlatform da 1.0.0 a 1.0.1 ha risolto questo problema per me.

5
Ben

Nel mio caso, simile a Basim, c'era un pacchetto NuGet che diceva al compilatore di cui avevamo bisogno C # 6, cosa che non avevamo.

Abbiamo dovuto rimuovere il pacchetto NuGet Microsoft.CodeDom.Providers.DotNetCompilerPlatform che poi rimosso:

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

Nel nodo system.codedom, puoi vedere perché stava portando a roslyn: compilerOptions="/langversion:6

4
Mark C.
  1. Soluzione pulita
  2. Ricostruisci la soluzione, questi due passaggi hanno funzionato per me.
4
nischa

Ho un webproject senza file csproj e le soluzioni menzionate qui non hanno funzionato per me.

Cambiare il framework .NET di destinazione, reinstallare i pacchetti (Update-Package -reinstall) e poi costruire il progetto ha funzionato per me. Puoi anche cambiare il framework di destinazione dopo questa operazione (fai suere di nuovo reinstallare i pacchetti di nuget). 

3
Miroslav Adamec

Ho avuto lo stesso problema durante l'installazione della mia applicazione sul server quando tutto ha funzionato perfettamente su localhost.

Nessuna di queste soluzioni ha funzionato, ho sempre avuto lo stesso errore:

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

Ho finito per fare questo: 

  • sul mio progetto di installazione, tasto destro, visualizza> file system
  • creare una cartella bin/roslyn
  • seleziona aggiungi> file e aggiungi tutti i file da packages\Microsoft.Net.Compilers.1.3.2\tools

Questo ha risolto il mio problema.

3
Alexandre Hamon

Avevo anche lo stesso problema durante l'esecuzione del progetto. ecco i passi che ho seguito.

  1. Clic destro in soluzione
  2. seleziona Soluzione pulita 
  3. Dopo la pulizia è riuscito, ancora una volta costruire il tuo progetto
  4. Esegui nuovamente il progetto

    Questa volta non vedo lo stesso errore. Funziona come previsto

3
Narendra

Aggiungi PropertyGroup al tuo file .csproj 

<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>
2
Igor Semin

Eliminare la cartella Bin nella soluzione Explorer e creare nuovamente la soluzione. Questo risolverebbe il problema

2
user1903050

Ho incontrato questo problema dopo aver aggiornato alcuni pacchetti tramite NuGet. Una ricostruzione (invece di una normale build) ha funzionato per me.

1
Helen

la mia soluzione sta usando Nuget per aggiornare sotto gli articoli alla versione più recente: - Microsoft.Net.Compilers - Microsoft.CodeDom.Providers.DotNetCompilerPlatform Quindi è stato ricostruito il progetto. Dato che il mio progetto è un sito Web, quindi nessun file * .csproj . L'errore sopra riportato appare quando ho provato a visualizzare un cshtml nel browser.

L'errore è stato risolto dopo i due articoli sopra aggiornati all'ultima versione . Sono in VS2015 e Windows7 SP1

1
Penny

FYI ...

A partire dal 31 maggio 2013 l'aggiornamento a Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.7 è funzionante.

1
Prisoner ZERO

Come notato in un problema nel progetto Roslyn su GitHub , una soluzione (che ha funzionato per me) è semplicemente scaricare e ricaricare il progetto in Visual Studio.

La cartella "bin\roslyn" non è stata creata su build o rebuild fino a quando non ho ricaricato il progetto.

1

Ho avuto lo stesso problema dopo l'aggiornamento di DotNetCompilerPlatform . Risolto dal riavvio di Visual Studio> Pulisci progetto> Crea progetto.

1
Uhha

Ho avuto questo errore per Microsoft.CodeDom.Providers.DotNetCompilerPlatform1.06 ma anche con 1.0.7 che ha funzionato per @PrisonerZERO. Tuttavia, quando Microsoft ha rilasciato 1.0.8, 2017-10-18, finalmente ha iniziato a funzionare di nuovo per me e non ho dovuto eseguire il downgrade.

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

1
Ogglas

Oltre all'eliminazione della directory Bin da tutti i progetti all'interno della soluzione, eliminare anche le cartelle obj.

Nella soluzione principale diretory rimuovere la cartella .vs

Ho lavorato per me quando ho cercato di portare un progetto già fatto in una soluzione vuota creata su git.

1
Erik Silva

Ho riscontrato questo errore su un server di build Jenkins su cui è in esecuzione MSBuild, che restituisce i file di build in un percorso di cartelle separato (_PublishedWebsites). Esattamente lo stesso: la cartella roslyn non si trovava nella directory bin e tutti i file di Roslyn erano raggruppati con i file bin.

@ la risposta di igor-semin è stata l'unica cosa che ha funzionato per me (visto che sto usando le funzionalità del linguaggio C # 6, non posso semplicemente disinstallare i pacchetti di nuget come per altre risposte), ma dato che sto eseguendo anche CodeAnalysis , Stavo ricevendo un altro errore sul mio server di destinazione dell'implementazione: 

È stato rilevato un tentativo di sovrascrittura di una mappatura esistente per tipo Microsoft.CodeAnalysis.ICompilationUnitSyntax con nome "", attualmente mappato per digitare Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax, per digitare Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax. 

La ragione di ciò è che mentre i file di Roslyn vengono scaricati nella directory bin principale, quando si esegue xcopy per ricrearli nella cartella nidata di Roslyn, ora si devono compilare 2 copie di questi file e c'è uno scontro tra di loro . Dopo molte frustrazioni ho deciso una correzione "hack" - un'attività aggiuntiva post-build per eliminare questi file dalla directory bin, rimuovendo il conflitto. 

Il .csproj dei miei progetti incriminati ora sembra:

................... di più qui ......................

 <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>
<Target Name="DeleteDuplicateAnalysisFiles" AfterTargets="AfterBuild">
   <!-- Jenkins now has copies of the following files in both the bin directory and the 'bin\rosyln' directory. Delete from bin. -->
   <ItemGroup>
     <FilesToDelete Include="$(WebProjectOutputDir)\bin\Microsoft.CodeAnalysis*.dll" />
   </ItemGroup>
   <Delete Files="@(FilesToDelete)" />
</Target>

................... di più qui ......................

0
Ciaran

Molte di queste risposte si riferiscono ai pacchetti di Nuget e/o alla pulizia e al ricaricamento del progetto.

Se si dispone di riferimenti al servizio WCF e endpoint non validi, è anche possibile ottenere questo messaggio di errore. Assicurarsi che gli endpoint siano corretti e aggiornare la configurazione del servizio con l'endpoint corretto in .config e quando si configura il riferimento del servizio dalla GUI.

 Image of Service Reference Configuration GUI

0
GibralterTop

Questo può essere fatto nel seguente modo semplice:

  • Crea un nuovo progetto di tipo simile ovunque nel tuo sistema. Crealo e copia sulla cartella di Roslyn nella directory bin.

La risposta è diversa per il progetto di sito Web e per il progetto di applicazione Web . Il problema sottostante è lo stesso che Il pacchetto NuGet si comporta in modo diverso su una macchina diversa. Può trattarsi di un problema relativo ai diritti o di una politica di esecuzione che impedisce di copiare nella cartella Bin Come sai, Roslyn è un nuovo compilatore. dovresti averlo nella cartella Bin per questi progetti Vai al tuo sito web Pacchetti NuGet controlla questa cartella Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0 \code\packages\Microsoft.CodeDom .Providers.DotNetCompilerPlatform.2.0.0 Lo vedi? Puoi vedere il codice\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\tools\RoslynLatest in esso Ora come parte della compilazione di questa cartella dovresti essere copiato nel tuo sito web sotto bin come questo .\code\WebSite1\Bin\Roslyn un po 'come ciò non sta accadendo per te . Prova a eseguire Visual Studio come Admin . Copia manualmente la cartella Roslyn . Prova a disinstallare e installare NuGet Package . Ricorda questo pacchetto compilare la tua cartella e se non è lì non puoi compilare nulla e quindi non puoi aggiungere nulla anche Prova a copiare questo pacchetto su offline versiontools -> options-> nuget Package Manager-> Package source- > Pacchetti offline Microsoft Visual Studio C:\Programmi (x86)\Microsoft SDK\NuGetPackages

0
Jin Thakur

Ho avuto questo errore dopo aver rinominato una soluzione e alcuni progetti inclusi, e mi sono divertito a rimuovere i pacchetti di nuget. Ho confrontato il nuovo progetto con l'ultimo progetto di lavoro e ho scoperto che mancavano le seguenti righe e che è necessario aggiungerle nuovamente:

  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Farlo risolve il problema per me.

0
TTT

Mi sono imbattuto in questo problema con la pipeline editoriale (che produce una directory _PublishedWebsites), e ho usato questo come Target nel progetto:

<Target Name="CopyRoslynCompilerFilesToPublishedWebsitesDirectory" AfterTargets="AfterBuild" Condition="Exists('$(OutDir)\_PublishedWebsites\$(TargetName)')">
    <Copy SourceFiles="@(RoslyCompilerFiles)" DestinationFolder="$(OutDir)\_PublishedWebsites\$(TargetName)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" />
</Target>

Lo svantaggio è che ci saranno due copie dei file di Roslyn nell'output.

0
EKW

Problema

Si noti che NuGet PM interrompe il comportamento di Rosalyn. Fare clic su Tools > NuGet Package Manager > Manage NuGet Packages for Solution Se esiste un aggiornamento per Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Microsoft.Net.Compilers o Microsoft.Net.Compilers.netcore, aggiornali e la soluzione si interromperà! Ciò si verifica perché i modelli ASP Sites sono impostati per utilizzare versioni specifiche alla creazione del progetto. Per visualizzare il problema, fare clic su Mostra tutti i file in Esplora soluzioni.

Fissare

Alla creazione del progetto $(WebProjectOutputDir)\bin non esiste, quindi quando Rosalyn viene aggiunto come dipendenza da NuGet lo installa correttamente. Dopo aver aggiornato i pacchetti della soluzione, la directory $(WebProjectOutputDir)\bin ha il seguente aspetto:

$(WebProjectOutputDir)\bin\bin\rosalyn

La soluzione più semplice è tagliare e incollare rosalyn nella posizione corretta, quindi eliminare la cartella bin extra. È ora possibile aggiornare la pagina e il sito verrà caricato.

0
eyoung100
  • Fare clic con il tasto destro del mouse sul progetto e selezionare Gestisci pacchetti Nuget
  • Trova "Microsoft.CodeDom.Providers.DotNetCompilerPlatform"
  • È sufficiente eseguire l'aggiornamento a una versione precedente o più recente (non importa quale), quindi aggiornare di nuovo la versione originale.

Questo re-installa tutte le dipendenze e i file del pacchetto (come csc.exe)

 Nuget - DotNetCompilerPlatform

0
Bojan

Ho dovuto modificare i file di progetto WebAPI e MVC per non creare viste: 

<MvcBuildViews>false</MvcBuildViews>

Questo ha risolto il mio errore del server di build TFS 2015 con roslyn. Ancora non sono sicuro del motivo per cui csc.exe è stato copiato in\bin\csc.exe, eppure il processo di pubblicazione stava cercando\bin\Roslyn\csc.exe ... non è stato possibile trovare la trasformazione che ha causato tale discrepanza. 

0
Robert J. Good

Nel mio caso ho riscontrato questo problema quando stavo eseguendo contemporaneamente due studi visivi IDE. Quindi la soluzione era pulire il progetto e chiudere l'altra istanza.

0
Badr Bellaj

Nel mio caso semplicemente cancellando tutto nella cartella bin e ricompilando ha fatto tutto il lavoro per me.

Buona fortuna a chiunque abbia questo problema.

0
Juan Martí