この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 55049|答える: 0

[出典] Roslyn MSBuildコンパイラの違い

[リンクをコピー]
掲載地 2021/03/21 11:55:39 | | | |
MSBuildMicrosoft Build Engineはアプリケーション構築のためのプラットフォームです。 このエンジンはMSBuildとも呼ばれ、プロジェクトファイルのXMLスキーマを提供し、ビルドプラットフォームがソフトウェアをどのように扱い、どのようにビルドするかを制御します。 Visual StudioはMSBuildを使っていますが、MSBuildはVisual Studioに依存していません。 プロジェクトやソリューションファイルでmsbuild.exeを呼び出すことで、Visual Studioがインストールされていない環境でも製品をスケジュール・構築できます。

紹介:ハイパーリンクのログインが見えます。

バラバラは名前からもわかるように、彼はMicrosoftのコンパイラであり、プロジェクトを実行可能なプログラムにプログラムする役割を担っています。

以前使われていたものでは、txtメモ帳でコードを修正し、msbuildで再コンパイルします。以下のように:

自宅のパソコンでノートパッドを使って.NETプログラムを10年間デバッグすること
https://www.itsvse.com/thread-9419-1-1.html

ロズリンはMicrosoft Corporationが提供するオープンソースの.NETコンパイラです。 コンパイラはC#およびVisual Basicのコードコンパイルをサポートし、豊富なコード解析APIを提供します。
新しいものを作ろうとしています.NET Framework 4.6VS 2019を使用したプロジェクトは通常、下の画像のようにMSBuildのProject Generate Output Detail設定を生成します。



以下のようにアイテムを右クリックして再生を試みてください:



1>------ すべての再構築が開始されました:プロジェクト:ConsoleApp1、設定:Debug Any CPU ------
1>開始時刻は2021/3/21 11:38:08です。
1>GenerateBindingRedirects:
1> ResolveAssemblyReferencesには提案された拘束リダイレクトはありません。
1>GenerateTargetFrameworkMonikerAttribute:
1>はターゲットの「GenerateTargetFrameworkMonikerAttribute」をスキップしています。なぜなら、すべての出力ファイルが入力ファイルに対して最新の状態だからです。
1>コアコンパイル:
1> C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702,2008 /fullpaths /nostdlib+ /platform: anycpu32bitpreferred /errorreport:prompt /warn:4 /define:DEBUG; TRACE /errorendlocation /preferreduilang:zh-CN /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Net.Http.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.6\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\ConsoleApp1.exe /subsystemversion:6.00 /target:exe /utf8output / deterministic+ /langversion:7.3 Program.cs Properties\AssemblyInfo.cs "obj\Debug\. NETFramework、Version=v4.6.AssemblyAttributes.cs」
1> 背面のカラムディレクトリからコンパイラの共有コンパイルを使用:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
1>_CopyAppConfigFile:
1> 「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\App.config」から「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\」へのファイルコピー ConsoleApp1.exe.config"。
1>CopyFilesToOutputDirectory:
1> 「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.exe」から「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\」へのファイルのコピー ConsoleApp1.exe"。
1> ConsoleApp1 -> C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe
1> 「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\obj\Debug\ConsoleApp1.pdb」から「C:\Users\itsvse_nuc\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\」へのファイルのコピー ConsoleApp1.pdb"。
1>
1>が正常に生成されました。
1>0 警告
1>0エラー
1>
1>経過時間 00:00:00.66
========== 全て再生:1人が成功、0が失敗、0==========スキップ

参考までにインターネット上の他の記事からダウンロードしたものです:


.NET Framework 4.0の組み込みMSBuildはC# 6.0の構文機能を認識していません。

「MSBuild」=> msbuild.exe、「Roslyn」=> csc.exe

MSbuildはVisual Studioのビルドシステムです。 C#コンパイラを呼び出してC#プロジェクトをコンパイルします。 RoslynはC#コンパイラ(およびVBコンパイラ)です。 したがって、msbuildはRoslynを使用しています。

しかし、Roslynには単なるコンパイラ以上のものが含まれています。 また、完成リスト、色、コード修正などのIDE機能を提供するVSプラグインも含まれています。

さらに、Roslynはソースコードを解析するためのAPIで、自分のアプリケーションで利用できます。 最後のケースでは、MSBuildWorkspaceというAPIを使ってプロジェクトやソリューションを解析のために開けることができます。 このワークスペースはMSBuildを使ってプロジェクトやソリューションのすべての部分を把握します。 したがって、このRoslinの部分はMSBuildを使用しています。


概要:

私の理解では、MSBuildはMicrosoftコンパイラの集合体であり、彼が生成の責任者ではないかもしれませんが、Roslynに呼んでC#コードをコンパイルするのを手伝ってくれるはずです。 また、他の言語でコードをコンパイルし、対応するコンパイラを呼び出すことも可能です。

C#プロジェクトのコンパイルに関しては、MSBuildが意思決定者、Roslynが実行者です。





先の:ASP.NET Core (VI) DIはオブジェクト注入の方法を手動で取得します
次に:.NET/C# エミットは動的にアセンブリを生成します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com