web-dev-qa-db-ja.com

RoslynがAsp.Netの/ binフォルダーに「必要」とする理由

これに関する多くの 関連する質問 がありますが、ほとんどの回答defineRoslynおよび/またはいくつかの問題に対する「修正」を提供します(exe、ホスティングプロバイダーなど)

追跡できないと思われるのは、/bin/roslynの「なぜ」と「何のため」(おそらくASP.Net MVC/Web APIのコンテキストでのみ)です。

同様の問題(ホスティング-.exeの制限、4.6のサポートなど)に遭遇し、「修正」は「Azureにデプロイする」(もちろんすべてが問題なく動作します)。しかし、実際には、これは答えません:

  • なぜ必要なのですか?
  • これは、それらがruntimeコンパイルに使用されることを意味しますか (私の脳はこれを指していますが、それは完全な推測です/おそらく私の間違ったgrokです)、 this SO post show -修正しない限り、これは「it」です(以下で詳しく説明します)。
  • 「パッケージの削除」は「修正」のようです (過去の回答に基づいて) 、 しかし、もしそうなら、それは(再)質問を始める

私は理解これが役立つと思う-例えば.exe「必要」を見て眉を上げるのは私だけではありません。


更新

「隠された宝石」が存在することを示すために行きます:)私は これを何度も読みます ...結局のところ、それはしばらくの間そこにありました しかしnotコメントスレッド -2014年頃の元の参照リンクはMicrosoftによって再設計され、コメントは表示されなくなりました...幸いなことに、関連する部分は以下にあります。

大きな間違い-それは私をずっと見つめていた(少なくともこの交換以来):

Dmitry Dzygin 2015年6月2日12:53 AM

NuGetパッケージの最新バージョンを試しましたが、コンパイラーのロード/実行方法に違いがあるようです

v0.2.0.0では、Roslynコンパイラがメモリにロードされ、複数の* .as * x/*。cshtmlファイルがあるプリコンパイルされていないWebサイトのパフォーマンスが大幅に向上します。ただし、新しいバージョンには、ファイルごとに1回実行される新しい/bin/roslyn/csc.exeファイルがあり、上記の最適化機能が完全に削除されます。...

ゴールド:

XMao 2015年6月2日1:22 PM

@ Dmitry csc.exe/bin/Roslynの仕事は、同じフォルダーにあるVBCSCompiler.exeを呼び出すことです。 VBCSCompiler.exeは、実際のコンパイル作業を行うプロセスです。 VBCSCompilerがすでに実行されている場合、csc.exeはそれを再利用するため、前述のパフォーマンスの改善が得られます。

えっと...


更新:2017年10月

これは関連性があると思われるため、今回はさらに更新します。

@ Donny Vによる以下の回答 は、オプションです。すべてのViews.cshtml/.vbhtml)を含むアプリケーションを完全にコンパイルすることにより、アプリケーションでexeを必要としなくなります。

これは、Visual Studio(今日まで、VS 2017、混乱を招くように)がstill/bin/roslynを作成し、Publishプロセスのコンテンツであっても、 「full compile」が設定されている場合でも

これをテストするには、exclusive/bin/roslynフォルダーと、アプリケーションをホスティングプロバイダーにプッシュする際のコンテンツを使用します。

警告

前述のように、アプリケーションを完全にコンパイルすると、Viewレベルが変更された場合でも、アプリケーションを再コンパイルする必要があります。

67
EdSF

これは、MSDNフォーラムから取られています。
https://social.msdn.Microsoft.com/Forums/vstudio/en-US/442b100a-2b88-4ac4-b655-0c1345791f15/roslyn-cscexe-web-api-2-on -hosting-server?forum = msbuild

このパッケージをアンインストールすることには小さな欠点があることに気付きました。

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

ビュー(MVCプロジェクト)で使用した場合、一部の新しいC#6.0言語機能はコンパイルされません。私の意見の多くは?を使用しています。モデルプロパティにアクセスするためのnullチェック演算子。これらのビューはすべて、GodaddyがホストするMVC 5アプリケーションでエラーを返します。

このエラーは、ビュー(デフォルト)が.NETパイプライン(プリコンパイルされていない)を使用して実行時にコンパイルされるために発生します。

この問題を解決するには、公開プロファイル設定の「プリコンパイル済みサイトを更新可能にする」オプションをオフにします。これにより、ビューがプリコンパイルされ、C#6.0(Roslyn Compilerの最新バージョン)がチャンピオンのように実行できるようになります。

この質問を見ている人に、アンインストールの影響と、そもそもなぜそこにあるのかを知ってほしい

32
Donny V.

Visual Studio 2017 Community Editionでは、bin/roslynの古いファイルを削除できなかったためプロジェクトを再構築できなかったため、常にこの問題が発生していました。 OPのゴールドコメントに基づいて、タスクマネージャーを開いたまま(Ctrl + Shift + Esc)、VBCS.exeプロセスを強制終了します。 bin/roslynの問題のあるファイルを削除できるようになりました。

8
Manish

もう1つの機能は、ビルドサーバーが実際にコンパイラの依存関係を持つ必要がないことです。コードでWITHを使用するコンパイラーをビルドサーバーに送信すると、指定したとおりのコードが使用されます。

1
Paul Swetz

Visual Studioのこのリリースには、「Roslyn」という名前の新しいバージョンのC#およびVB.netコンパイラコードが含まれています。

Roslynは、C#およびVB.netコンパイラを完全に書き直したものです。たとえば、C#コンパイラはC++ではなくC#で記述されています。 Roslynはオープンソース(GitHubのRoslyn)であるため、理論的には独自のバージョンのC#またはVB.netを作成することもできます。

Roslynとなるものは、2008年にPDC会議でAnders Hejlsbergによって最初に言及されましたが、最初のプレビューがリリースされたのは2011年までではありませんでした。

次のリンクを参照して、問題に関する詳細情報を入手できます。

https://gooroo.io/GoorooTHINK/Article/16253/Visual-Studio-2015-and-Roslyn-Compiler/17944#.VmkfwjaheM8

https://visualstudiomagazine.com/articles/2012/03/20/10-questions-10-answers-on-roslyn.aspx

From: https://forums.asp.net/t/2079727.aspx?What+is+the+roslyn+folder+

0
Prime