Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 55049|Απάντηση: 0

[Πηγή] Η διαφορά μεταξύ του μεταγλωττιστή Roslyn MSBuild

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 21/3/2021 11:55:39 π.μ. | | | |
MSBuild: Το Microsoft Build Engine είναι μια πλατφόρμα για τη δημιουργία εφαρμογών. Αυτή η μηχανή, γνωστή και ως MSBuild, παρέχει ένα σχήμα XML για αρχεία έργου που ελέγχει τον τρόπο με τον οποίο η πλατφόρμα κατασκευής χειρίζεται και δημιουργεί λογισμικό. Το Visual Studio χρησιμοποιεί το MSBuild, αλλά το MSBuild δεν εξαρτάται από το Visual Studio. Καλώντας msbuild.exe σε ένα έργο ή ένα αρχείο λύσης, μπορείτε να προγραμματίσετε και να δημιουργήσετε προϊόντα σε ένα περιβάλλον χωρίς εγκατεστημένο το Visual Studio.

Εισάγω:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Ο Barabala είπε τόσα πολλά, όπως φαίνεται από το όνομα, είναι ο μεταγλωττιστής της Microsoft, δηλαδή προγραμματίζει έργα σε εκτελέσιμα προγράμματα κ.λπ.

Χρησιμοποιήθηκε πριν, τροποποιήστε τον κώδικα χρησιμοποιώντας το σημειωματάριο txt, μεταγλωττίστε ξανά με το msbuild, ως εξής:

Εντοπισμός σφαλμάτων προγραμμάτων .NET με Σημειωματάριο στο σπίτι σε υπολογιστή για δέκα χρόνια
https://www.itsvse.com/thread-9419-1-1.html

Ρόσλινείναι ένας μεταγλωττιστής .NET ανοιχτού κώδικα από τη Microsoft Corporation. Ο μεταγλωττιστής υποστηρίζει μεταγλώττιση κώδικα C# και Visual Basic και παρέχει πλούσια API ανάλυσης κώδικα.
Προσπαθούμε να δημιουργήσουμε ένα νέοΠλαίσιο .NET 4.6έργο, χρησιμοποιώντας το VS 2019 θα δημιουργήσει κανονικά τη ρύθμιση MSBuild Project Generate Output Detail, όπως φαίνεται στην παρακάτω εικόνα:



Κάντε δεξί κλικ στο στοιχείο για να προσπαθήσετε να αναγεννηθεί, όπως φαίνεται παρακάτω:



1>------ Όλες οι ανακατασκευές έχουν ξεκινήσει: Έργο: ConsoleApp1, Διαμόρφωση: Εντοπισμός σφαλμάτων οποιασδήποτε CPU ------
1> Η ώρα έναρξης είναι 21/3/2021 11:38:08.
1>ΔημιουργίαΔεσμευτικέςΑνακατευθύνσεις:
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 Ιδιότητες\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 ========== παραλείπεται

Λήψη από άλλα άρθρα στο Διαδίκτυο, μόνο για αναφορά:


Το ενσωματωμένο MSBuild του .NET Framework 4.0 δεν αναγνωρίζει δυνατότητες σύνταξης C# 6.0.

"MSBuild" => msbuild.exe, "Roslyn" => csc.exe

Το MSbuild είναι το σύστημα κατασκευής του Visual Studio. Καλεί τον μεταγλωττιστή C# για να μεταγλωττίσει το έργο C#. Η Roslyn είναι μεταγλωττιστής C# (και μεταγλωττιστής VB). Επομένως, το msbuild χρησιμοποιεί τη Roslyn.

Ωστόσο, η Roslyn περιέχει περισσότερα από έναν απλό μεταγλωττιστή. Περιλαμβάνει επίσης ένα πρόσθετο VS που σας παρέχει δυνατότητες IDE (λίστες συμπλήρωσης, χρώματα, διορθώσεις κώδικα κ.λπ.).

Επιπλέον, το Roslyn είναι ένα API για την ανάλυση του πηγαίου κώδικα, το οποίο μπορείτε να χρησιμοποιήσετε στις δικές σας εφαρμογές. Για την τελευταία περίπτωση, υπάρχει ένα API που ονομάζεται MSBuildWorkspace που μπορεί να χρησιμοποιηθεί για το άνοιγμα ενός έργου ή μιας λύσης για ανάλυση. Αυτός ο χώρος εργασίας χρησιμοποιεί το MSBuild για να ανακαλύψει όλα τα μέρη ενός έργου και μιας λύσης. Επομένως, αυτό το τμήμα του Roslin χρησιμοποιεί το MSBuild.


Περίληψη:

Η δική μου κατανόηση είναι ότι το MSBuild είναι μια συλλογή μεταγλωττιστών της Microsoft και μπορεί να μην είναι υπεύθυνος για τη μεταγλώττιση της γενιάς, αλλά θα μας βοηθήσει να καλέσουμε τη Roslyn να μεταγλωττίσει τον κώδικα c#. Μπορεί επίσης να μεταγλωττίσει κώδικα σε άλλες γλώσσες και στη συνέχεια να καλέσει άλλους αντίστοιχους μεταγλωττιστές.

Για τη σύνταξη έργων C#, το MSBuild είναι ο υπεύθυνος λήψης αποφάσεων και η Roslyn είναι ο εκτελεστής.





Προηγούμενος:ASP.NET Πυρήνας (VI) Το DI λαμβάνει χειροκίνητα τη μέθοδο έγχυσης αντικειμένων
Επόμενος:.NET/C# Το Emit δημιουργεί δυναμικά συγκροτήματα
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com