ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される (\bin\roslyn ディレクトリが生成されないようにする) - ASP.NET

ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される現象について紹介します。

動作

Visual Studio 2015 では、ASP.NETプロジェクトを作成してビルドすると、"bin"ディレクトリ内に"roslyn"ディレクトリが生成されます。


roslyn ディレクトリ内には、csc.exe vbc.exe などのコンパイラのファイルが配置されます。


"\bin\roslyn"ディレクトリのファイルを配置せずに ASP.NETアプリケーションを実行した場合、下図の csc.exe が見つからないといったエラーが発生する場合があります。

方法1:Microsoft.CodeDom.Providers.DotNetCompilerPlatform をアンインストールする

ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成されないようにする方法です。

[ツール]メニューの[NuGet パッケージマネージャー]の[パッケージ マネージャー コンソール]メニューをクリックし、NuGet パッケージマネージャーコンソールを表示します。

NuGet パッケージマネージャーコンソールで下記のコマンドを実行します。
Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
または
Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform (プロジェクト名)


Microsoft.CodeDom.Providers.DotNetCompilerPlatform パッケージのアンインストールが実行されます。


アンインストール後にビルドすると、binディレクトリ内に"roslyn"ディレクトリは作成されない状態になります。

方法2:roslyn ディレクトリ内のプログラムの参照をしないための処理

\bin\roslynディレクトリのファイルの参照は余分なため、\bin\roslynディレクトリのファイルを参照せずに実行したい場合があります。

Visual Studioを起動し、プロジェクトを開きます。


プロジェクトのソリューションエクスプローラウィンドウを表示します。プロジェクトの[参照]ノードを開きます。


参照されているアセンブリの中から"Microsoft.CodeDom.Providers.DotNetComplierPlatform"をクリックして選択します。選択後右クリックしポップアップメニューを表示します。メニューの[削除]を選択し、"Microsoft.CodeDom.Providers.DotNetComplierPlatform"を参照から外します。


Web.config の変更

変更前

<?xml version="1.0" encoding="utf-8"?>
<!--
  ASP.NET アプリケーションの構成方法の詳細については、
  http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
  <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>
</configuration>

変更後

compilers タグによる、コンパイラへの参照を削除します。
<?xml version="1.0" encoding="utf-8"?>
<!--
  ASP.NET アプリケーションの構成方法の詳細については、
  http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>
</configuration>

packages.config の変更

変更前

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
</packages>

変更後

package タグを削除し、"Microsoft.CodeDom.Providers.DotNetCompilerPlatform"への参照と、"Microsoft.Net.Compilers"への参照を削除します。
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>


削除後、配置すると、\bin\roslyn ディレクトリのファイルが無くてもASP.NETアプリケーションが動作します。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用

関連するページ

最終更新日: 2020-09-21
作成日: 2016-04-28
iPentec all rights reserverd.