web-dev-qa-db-ja.com

パスの一部が見つかりませんでした... bin\roslyn\csc.exe

TFSソース管理から取得したAsp.net MVCプロジェクトを実行しようとしています。すべてのアセンブリ参照を追加したので、エラーや警告なしに正常にビルドおよびコンパイルできます。

しかし、私はブラウザに次のエラーが出ます:

パス「C:\ B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe」の一部が見つかりませんでした。

これはエラーページのフルスクリーンショットです。

enter image description here

数日の調査の結果、 Roslyn は高度なコンパイル機能を提供する.NETコンパイラプラットフォームであることがわかりました。しかし、私は自分のビルドがなぜ\ bin\roslyn\csc.exeを見つけようとしているのか理解できません。なぜなら、私はRoslynに関連するものを何も構成せず、プロジェクトでRoslynを使用するつもりもないからです。

471
Eyad

デフォルトのVS2015テンプレートの問題は、コンパイラが実際にはtfr\bin\roslyn \ディレクトリにコピーされるのではなく、{outdir}\roslyn \ディレクトリにコピーされることです。

このコードを.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>
247
Mitchell

私の場合、解決策はNugetパッケージを再インストール/アップグレードすることでした。

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

それから私は.csprojを調べ、一番上の<ImportProject>タグの中と一番下の "VerifyNuGetPackageBuildImports"という名前の<Target>の中で、パッケージへのパスが正しいことを確認しました(私の場合は..\..\packages\*。*)。これはMVC 5と.NET Framework 4.5.2にあります。

簡単な答え - パッケージマネージャコンソールでこれを実行してください:

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

593
andy250

次のパッケージがプロジェクトに追加されているため、ビルドは\bin\roslyn\csc.exeを見つけようとしています。packages.configファイルを確認するだけで、両方をそこに含めることができます。

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

Roslynとは何ですか?また、Whoはプロジェクトにそれらを追加しました(パッケージ)。 VS2015を使用してプロジェクトを作成するために.net Framework 4.5.2を使用している場合実際、RoslynはMicrosoftの.NET言語用の オープンソース のコンパイラの1つです。

なぜRoslynを削除すべきですか: プロジェクトにRoslynの参照があり、サーバーなしでデプロイすることに興味がある場合、多くのホスティングプロバイダーがまだサーバーをアップグレードしていないためこの問題を解決するには、プロジェクトテンプレートからRoslynコンパイラを削除する必要があります。

Roslynの使用に興味がない場合は、 以下の手順に従って削除してください

1. Nugetパッケージを削除します。Nugetパッケージコンソールから次のコマンドを使用します。

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

清潔で再構築が私のために働いた!

57
pipedreambomb

これを行う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ディレクトリーにもあることに気付きました。ただし、アプリは動作するようです。

55
Rob Cannon

NuGet Package Manager

あなたはMicrosoft.CodeDom.Providers.DotNetCompilerPlatform.BinFixをインストールする必要があります、特にそのエラーのために作成されました

15
Adrian Berca

葉巻なしですべての修正を試した後、私はビジュアルスタジオでこのNugetパッケージを更新することによってそれを修正しました:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

参照用にMineが1.0.0から2.0.0であった(エラーは表示されなくなった)

15
josh.thomson

そう、 Rob Cannonの答え は本質的に私のために働いたが、私はオプションのほんの一握りを微調整しなければならなかった。具体的には、プロジェクトがビルドサーバー上でビルドされたときに$ CscToolPathが空だったため、ターゲットの条件を削除し、Include属性を変更する必要がありました。奇妙なことに、ローカルで実行しているときに$ 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>
11
jonnybot

私はこれらのステップに従った、そしてそれは完全にうまくいった

  • Binフォルダとobjフォルダをすべて削除します。
  • きれいな解決策と再構築
  • このコマンドをPowerShellで実行する

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

10

これは 既知の問題 with Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6です。 1.0.5にダウングレードすることでこれが解決しました。

9
jrummell

上記のDaniel Neelのコメントによると:

microsoft.CodeDom.Providers.DotNetCompilerPlatform Nugetパッケージのバージョン1.0.3は私のために働きます、しかしバージョン1.0.6はこの質問のエラーを引き起こします

1.0.3にダウングレードすると、この問題は解決しました。

8
Jason Coyne

私の場合は、Visual Studioソリューションエクスプローラ(Webアプリケーションプロジェクト)のbinディレクトリに移動して、roslynプロジェクトを直接含める必要がありました。フォルダを右クリックして[プロジェクトに含める]を選択します。ソリューションをもう一度チェックインして、ビルドプロセスを開始します。

Roslynフォルダはデフォルトでは含まれていませんでした。

8

解決策のための解決策> NuGetパッケージの管理を右クリックし、すべてのパッケージを更新して特別に: Microsoft.Net.Compilers および Microsoft.CodeDom.Providers.DotNetCompilerPlatform

8
hichamkazan
  • プロジェクトを右クリックして[Manage Nuget Packages]を選択します。
  • "Microsoft.CodeDom.Providers.DotNetCompilerPlatform"を検索してください。
  • 単に古いか新しいバージョンに更新して(どちらでも構いません)、元のバージョンに更新してください。

これにより、パッケージのすべての依存関係とファイル(csc.exeなど)が再インストールされます。

Nuget - DotNetCompilerPlatform

8
Bojan

Microsoft.CodeDom.Providers.DotNetCompilerPlatformを1.0.0から1.0.1にアップグレードするとこれが解決しました。

7
Ben

私の場合、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#:無効な式のコンパイル をスローする)で、この方法で解決されました( Visual Studio 2015でC#7を使用する方法? )。その結果、メインプログラムにコンポーネントをインストールしたときに、Microsoft.Net.Compilersが自動的に追加されます。

解決策

私の回避策は、次の方法で、私たちの内部コンポーネントからフォローをアンインストールしたことです(@malikKhalilの回答をフォロー)

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

そして、C#6ではなくJenkinsのC#7コンパイラを選択して再構築します。これは、すべてが正しく機能し構築されていることを確認するためです。

私のメインプログラムでようやく私は私の内部コンポーネントを更新しようとしました。そして、再構築以外のすべてのもの。それは何の問題も問題もなく構築しました。

プロジェクトファイルを開き、Import Project = "..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ...を使用して remove all参照を選択します。

Web.configを開き、 remove すべてのsystem.codedomコンパイラの属性を開きます。

6
user6326076

デフォルトのVS2015テンプレートの問題は、コンパイラが実際には{outdir}_PublishedWebsites\tfr\bin\roslyn\ディレクトリにコピーされるのではなく、{outdir}\roslyn\ディレクトリにコピーされることです。 AppHarborはソリューションを「インプレース」で構築するのではなく、出力ディレクトリを使用してアプリケーションを構築するため、これはおそらくローカル環境とは異なります。

これを修正するには、xmlブロック.csprojの直後に<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

5
Korayem

このStackOverflowの質問 のように、MVCでRazorビューをコンパイルするためにASPNETCOMPILERを追加する場合は、PhysicalPathをRoslyn nugetパッケージが配置されている場所に配置するように変更します(通常は $ CscToolPath variableで示されます)。

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

私の場合は、Basimと同様に、C#6が必要であるとコンパイラに伝えていたNuGetパッケージがありましたが、そうはしませんでした。

NuGetパッケージMicrosoft.CodeDom.Providers.DotNetCompilerPlatformを削除しなければなりませんでした。

  1. packages.configファイルの<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
  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ノードで、なぜそれがroslynをもたらしたのかを見ることができます:compilerOptions="/langversion:6

4
Mark C.

プロジェクトを実行している間も私は同じ問題を抱えていました。これが私が従ったステップです。

  1. ソリューションを右クリック
  2. クリーンソリューションを選択
  3. クリーンに成功したら、もう一度プロジェクトを構築します
  4. プロジェクトをもう一度実行します

    今回は同じエラーが表示されません。これは期待通りに動作します

4
Narendra
  1. クリーンソリューション
  2. ソリューションを再構築します。これら2つのステップは私にとって役に立ちました。
4
nischa

Csprojファイルがないwebprojectがあり、ここで説明した解決策がうまくいかなかった。

ターゲット.NETフレームワークを変更し、パッケージを再インストールし(Update-Package -reinstall)、そしてプロジェクトをビルドすることは私にとってはうまくいきました。この操作の後でターゲットフレームワークを元に戻すこともできます(後でnugetパッケージを再インストールしても問題ありません)。

3
Miroslav Adamec

Windowsを再起動します。

これは、再構築、binのコンテンツの削除、再構築、Visual Studioの再起動を試みた後、私にとって有効な唯一のソリューションです。

これは、C#/。NETビルドツールがどれほどひどいものであるかを示すもう1つの例です。

回答の多くを読んだ後)、全体的な結論は、この問題の原因と解決策はセットアップとプロジェクトに大きく依存しているため、ある回答が機能しない場合は、別の回答を試してください。 NuGetパッケージをいじったり、開発ツールを再インストールしたりする前に、Visual Studioの再起動、再起動、再構築などの侵入/破壊的なソリューションを最初に。幸運を祈ります!

(注:Visual Studio 2019を使用し、プロジェクトファイルは元々Visual Studio 2015で作成されました。これは誰かが問題を調査するのに役立つかもしれません)

(編集:これは、インストーラーが再起動を促すプロンプトを表示したときに、Visual Studioインストールのインストール/変更後、またはVisual Studioの更新後に再起動しないために発生する可能性がありますか?)

3
Florian Winter

Localhostですべてがうまくいったときに私のアプリケーションをサーバにインストールするときにも同じ問題がありました。

これらの解決策はどれも解決しませんでした、私はいつも同じエラーを抱えていました:

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

私はこれをやってしまった:

  • 私のセットアッププロジェクトでは、右クリック、表示>ファイルシステム
  • bin/roslynフォルダを作成する
  • add> filesを選択し、packages\Microsoft.Net.Compilers.1.3.2\toolsからすべてのファイルを追加します。

これで私の問題は解決した。

3
Alexandre Hamon

ソリューション内のすべてのプロジェクトからBinディレクトリを削除する以外に、objフォルダも削除します。

メインソリューションディレクトリで、フォルダ.vsを削除します。

既に完成したプロジェクトをgitで作成された空のソリューションに持ち込もうとしたとき、私のために働きました。

3
Erik Silva

PropertyGroupを.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

ソリューションエクスプローラーでBinフォルダーを削除して、もう一度ソリューションをビルドします。それは問題を解決するでしょう

2
user1903050

NuGetを通していくつかのパッケージを更新した後、私はこの問題に遭遇しました。 (通常のビルドではなく)再構築が私にとってうまくいった。

1
Helen

私の解決策は、Nugetを使用して以下の項目を最新バージョンに更新することです。 - Microsoft.Net.Compilers - Microsoft.CodeDom.Providers.DotNetCompilerPlatform次に、プロジェクトを再構築しました。私のプロジェクトはWebサイトなので* .csprojファイルはありません。上記のエラーは、ブラウザでcshtmlを表示しようとしたときに表示されます。

上記の2つの項目が最新のバージョンに更新された後に、エラーは修正されました。私はVS2015とwindows 7 SP1にいます

1
Penny

ちょっと….

2017/08/31現在、Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.7にアップグレードすることはできます。

1
Prisoner ZERO

GitHubのRoslynプロジェクトの問題 で述べたように、(私にとってはうまくいった)解決策は、単にVisual Studioでプロジェクトをアンロードして再ロードすることです。

プロジェクトをリロードするまで、 "bin\roslyn"フォルダはビルド時または再構築時に作成されませんでした。

1

DotNetCompilerPlatformを更新した後も同じ問題がありました。 Visual Studio>プロジェクトのクリーンアップ>プロジェクトのビルドを再起動することで解決します。

1
Uhha

私はMicrosoft.CodeDom.Providers.DotNetCompilerPlatform1.06だけでなく@PrisonerZEROでも機能する1.0.7でもこのエラーがありました。しかし、Microsoftが1.0.8 2017-10-18をリリースしたとき、ついに私のために働き始めたので、ダウングレードする必要はありませんでした。

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

1
Ogglas

私の場合、2つのビジュアルスタジオIDEを同時に実行していたときにこの問題が発生しました。それで解決策はプロジェクトをきれいにして他のインスタンスを閉じることでした。

1
Badr Bellaj

MSBuildを実行しているJenkinsビルドサーバーでこのエラーが発生し、ビルドファイルが別のフォルダーの場所(_PublishedWebsites)に出力されます。まったく同じ - roslynフォルダはbinディレクトリにはなく、すべてのroslynファイルはbinファイルにまとめられていました。

@ igor-seminineの答え が私のために働いた唯一のものでした(私はC#6言語機能を使っているので、他の答えのように単純にnugetパッケージをアンインストールすることはできません)。デプロイメントターゲットサーバーで別のエラーが発生しました。

現在 "Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax"型に、 "Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax"型にマップされている、名前 ""のMicrosoft.CodeAnalysis.ICompilationUnitSyntax型に対して既存のマッピングを上書きする試みが検出されました。

これは、roslynファイルがメインのbinディレクトリにダンプされているので、xcopyを実行してそれらをネストされたroslynフォルダに再作成すると、これらのファイルの2つのコピーがコンパイルされ、衝突することがあるためです。 。多くのフラストレーションの後、私は「ハック」修正 - binディレクトリからこれらのファイルを削除する追加のビルド後タスクを決定し、競合を取り除きました。

問題のあるプロジェクトの.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>
<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>

...................もっとここに......................

0
Ciaran

これらの回答の多くは、Nugetパッケージの参照やプロジェクトのクリーニングや再読み込みを行っています。

WCFサービス参照と無効なエンドポイントがある場合は、このエラーメッセージも表示される可能性があります。エンドポイントが正しいことを確認し、GUIからサービス参照を構成するときに、.config内の正しいエンドポイントを使用してサービス構成を更新してください。

Image of Service Reference Configuration GUI

0
GibralterTop

私の状況では、私たちのチームは「パッケージ」フォルダーを保持したくないので、すべてのdllを「sharedlib」などの他のディレクトリーに入れます。

ビルドイベントを使用してこの問題を解決しました。

if "$(ConfigurationName)" == "Release" (
goto :release
) else (
goto:exit
)

:release
if not exist $(TargetDir)\roslyn mkdir $(TargetDir)\roslyn

copy /Y "$(ProjectDir)..\..\Shared Lib\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\tools\Roslyn45\*" "$(TargetDir)\roslyn"
goto :exit

:exit
0
Ray Chung

これは以下の簡単な方法で行うことができます -

  • システム内の任意の場所に、同様の種類の新しいプロジェクトを作成します。それをビルドしてroslynフォルダをあなたのbinディレクトリにコピーしてください。

これに対する答えは、WebサイトプロジェクトとWebアプリケーションプロジェクトでは異なります。根本的な問題は、NuGetパッケージが異なるマシンで異なる動作をすることと同じです。 Roslynが新しいコンパイラであることをご存じのとおり、Binフォルダへのコピーを妨げるのは、権利の問題または何らかの実行ポリシーの可能性があります。あなたはこれらのプロジェクトのBinフォルダにそれを持っているべきですあなたのウェブサイトに行くNuGetパッケージはこのフォルダをチェックしてください?あなたはそれの中にcode\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\tools\RoslynLatestを見ることができます今、このFolderをコンパイルすることの一部としてあなたのウェブサイトにbinの下にコピーされるはずです。\code\WebSite1\Bin\Roslynいくつかの方法はあなたのために起こっていません。管理者としてVisual Studioを実行してみてください。手動でRoslynフォルダをコピーします。 NuGetパッケージのアンインストールとインストールを試してください。このパッケージはあなたのフォルダをコンパイルすることを覚えておいてください、そして、そこになければ何もコンパイルすることができないので、あなたも何も追加することができません。このパッケージをオフラインバージョンのツールにコピーしてみてください - >オプション - > nugetパッケージマネージャ - >パッケージソース - > Microsoft Visual StudioオフラインパッケージC:\ Program Files(x86)\ Microsoft SDKs\NuGetPackages

0
Jin Thakur

私はソリューションといくつかの含まれているプロジェクトの名前を変更し、そして核となるパッケージを削除することで遊んだ後、私はこのエラーを経験しました。私は新しいプロジェクトを最後の作業中のプロジェクトと比較したところ、次の行が欠落していたので追加し直す必要があることがわかりました。

  <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')" />

そうすることで問題は解決しました。

0
TTT

私は、発行パイプライン(_PublishedWebsitesディレクトリを作成する)でこの問題に遭遇し、これをプロジェクトのターゲットとして使用しました。

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

欠点は、出力にRoslynファイルの2つのコピーがあることです。

0
EKW

問題

NuGet PMは、Rosalynの動作を中断します。 Tools > NuGet Package Manager > Manage NuGet Packages for Solutionをクリックします。更新がMicrosoft.CodeDom.Providers.DotNetCompilerPlatformMicrosoft.Net.Compilers、またはMicrosoft.Net.Compilers.netcoreに対して存在する場合、それらを更新します。解決策は壊れます!これは、ASPサイトテンプレートがプロジェクトの作成時に特定のバージョンを使用するように設定されているために発生します。問題を確認するには、ソリューションエクスプローラーで[すべてのファイルを表示]をクリックします。

修正する

プロジェクトの作成時に$(WebProjectOutputDir)\binは存在しません。そのため、RosalynがNuGetによって依存関係として追加されると、それは正しくインストールされます。ソリューションパッケージを更新すると、$(WebProjectOutputDir)\binディレクトリは次のようになります。

$(WebProjectOutputDir)\bin\bin\rosalyn

最も簡単な解決策は、ロザリンを適切な場所にカットアンドペーストしてから、余分なbinフォルダを削除することです。これでページを更新でき、サイトがロードされます。

0
eyoung100

私はビューを構築しないようにWebAPIとMVCプロジェクトファイルを変更しなければなりませんでした:

<MvcBuildViews>false</MvcBuildViews>

これにより、roslynに関するTFS 2015 Buildサーバーエラーが解決されました。 csc.exeが\ bin\csc.exeにコピーされた理由がまだわかりませんが、それでも公開プロセスは\ bin\Roslyn\csc.exeを探していました...その矛盾の原因となる変換を見つけることができませんでした。

0
Robert J. Good

私の場合は、binフォルダ内のすべてを削除して再コンパイルするだけで、すべての作業が完了しました。

この問題を抱えている人には幸運を祈ります。

0
Juan Martí