Diff
checker
Testo
Testo
Immagini
Documenti
Excel
Cartelle
Legal
Enterprise
Applicazione per desktop
Prezzi
Accedi
Scarica Diffchecker Desktop
Confronta il testo
Trova la differenza tra due file di testo
Strumenti
Cronologia
Editor live
Nascondi spazi bianchi
Comprimi invariate
Senza a capo
Layout
Diviso
Unificato
Livello di dettaglio
Intelligente
Parola
Carattere
Stili testo
Modifica aspetto
Evidenziazione sintassi
Scegli sintassi
Ignora
Trasforma testo
Vai alla prima modifica
Modifica input
Diffchecker Desktop
Il modo più sicuro per usare Diffchecker. Ottieni l'app Diffchecker Desktop: i tuoi diff non lasciano mai il tuo computer!
Ottieni Desktop
Untitled diff
Creato
8 anni fa
Il diff non scade mai
Eliminare
Esporta
Condividere
Spiegare
3 rimozioni
Linee
Totale
Rimosso
Caratteri
Totale
Rimosso
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
52 linee
Copia tutti
17 aggiunte
Linee
Totale
Aggiunto
Caratteri
Totale
Aggiunto
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
60 linee
Copia tutti
using System;
using System;
using System.IO;
using System.IO;
using System.Linq;
using System.Linq;
using System.Reflection;
using System.Reflection;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp;
class Program
class Program
{
{
static void Main(string[] args)
static void Main(string[] args)
{
{
var greetings = HelloWorlder.GetGreetings();
var greetings = HelloWorlder.GetGreetings();
// should write Hello World
// should write Hello World
greetings();
greetings();
}
}
}
}
public static class HelloWorlder
public static class HelloWorlder
{
{
public static Action GetGreetings()
public static Action GetGreetings()
{
{
var tree = CSharpSyntaxTree.ParseText(@"
var tree = CSharpSyntaxTree.ParseText(@"
using System;
using System;
public class MyClass
public class MyClass
{
{
public static void Main()
public static void Main()
{
{
Copia
Copiato
Copia
Copiato
Console.WriteLine(""Hello World!"");
//
Console.WriteLine(""Hello World!"");
Console.ReadLine();
//
Console.ReadLine();
}
}
}");
}");
const string testAsmName = "testLib";
const string testAsmName = "testLib";
var coreDir = Path.GetDirectoryName(typeof(object).GetTypeInfo().Assembly.Location);
var coreDir = Path.GetDirectoryName(typeof(object).GetTypeInfo().Assembly.Location);
Copia
Copiato
Copia
Copiato
var mscorlib = MetadataReference.CreateFromFile(Path.Combine(coreDir, "
mscorlib
.dll"));
var mscorlib = MetadataReference.CreateFromFile(Path.Combine(coreDir, "
System.Private.CoreLib
.dll"));
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
var compilation = CSharpCompilation.Create(testAsmName,
var compilation = CSharpCompilation.Create(testAsmName,
Copia
Copiato
Copia
Copiato
syntaxTrees: new[] { tree }, references: new[] { mscorlib }
);
syntaxTrees: new[] { tree }, references: new[] { mscorlib }
, options: options
);
Copia
Copiato
Copia
Copiato
var emitResult = compilation.Emit(
$"{testAsmName}.dll"
);
var ms = new MemoryStream();
var emitResult = compilation.Emit(
ms);
ms.Seek(0, SeekOrigin.Begin
);
if (!emitResult.Success)
if (!emitResult.Success)
{
{
throw new Exception(string.Join(Environment.NewLine, emitResult.Diagnostics.Select((x, i) => $"{i + 1}. {x}")));
throw new Exception(string.Join(Environment.NewLine, emitResult.Diagnostics.Select((x, i) => $"{i + 1}. {x}")));
}
}
Copia
Copiato
Copia
Copiato
var ourAssembly = Assembly.Load(
new AssemblyName(testAsmName
));
var ourAssembly = Assembly.Load(
ms.ToArray(
));
var type = ourAssembly.GetType("MyClass");
var type = ourAssembly.GetType("MyClass");
var meth = type.GetRuntimeMethod("Main", Type.EmptyTypes);
var meth = type.GetRuntimeMethod("Main", Type.EmptyTypes);
Copia
Copiato
Copia
Copiato
ms.Close();
return () => meth.Invoke(null, null);
return () => meth.Invoke(null, null);
}
}
}
}
Diff salvati
Testo originale
Apri file
using System; using System.IO; using System.Linq; using System.Reflection; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; class Program { static void Main(string[] args) { var greetings = HelloWorlder.GetGreetings(); // should write Hello World greetings(); } } public static class HelloWorlder { public static Action GetGreetings() { var tree = CSharpSyntaxTree.ParseText(@" using System; public class MyClass { public static void Main() { Console.WriteLine(""Hello World!""); Console.ReadLine(); } }"); const string testAsmName = "testLib"; var coreDir = Path.GetDirectoryName(typeof(object).GetTypeInfo().Assembly.Location); var mscorlib = MetadataReference.CreateFromFile(Path.Combine(coreDir, "mscorlib.dll")); var compilation = CSharpCompilation.Create(testAsmName, syntaxTrees: new[] { tree }, references: new[] { mscorlib }); var emitResult = compilation.Emit($"{testAsmName}.dll"); if (!emitResult.Success) { throw new Exception(string.Join(Environment.NewLine, emitResult.Diagnostics.Select((x, i) => $"{i + 1}. {x}"))); } var ourAssembly = Assembly.Load(new AssemblyName(testAsmName)); var type = ourAssembly.GetType("MyClass"); var meth = type.GetRuntimeMethod("Main", Type.EmptyTypes); return () => meth.Invoke(null, null); } }
Testo modificato
Apri file
using System; using System.IO; using System.Linq; using System.Reflection; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; class Program { static void Main(string[] args) { var greetings = HelloWorlder.GetGreetings(); // should write Hello World greetings(); } } public static class HelloWorlder { public static Action GetGreetings() { var tree = CSharpSyntaxTree.ParseText(@" using System; public class MyClass { public static void Main() { //Console.WriteLine(""Hello World!""); //Console.ReadLine(); } }"); const string testAsmName = "testLib"; var coreDir = Path.GetDirectoryName(typeof(object).GetTypeInfo().Assembly.Location); var mscorlib = MetadataReference.CreateFromFile(Path.Combine(coreDir, "System.Private.CoreLib.dll")); var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary); var compilation = CSharpCompilation.Create(testAsmName, syntaxTrees: new[] { tree }, references: new[] { mscorlib }, options: options); var ms = new MemoryStream(); var emitResult = compilation.Emit(ms); ms.Seek(0, SeekOrigin.Begin); if (!emitResult.Success) { throw new Exception(string.Join(Environment.NewLine, emitResult.Diagnostics.Select((x, i) => $"{i + 1}. {x}"))); } var ourAssembly = Assembly.Load(ms.ToArray()); var type = ourAssembly.GetType("MyClass"); var meth = type.GetRuntimeMethod("Main", Type.EmptyTypes); ms.Close(); return () => meth.Invoke(null, null); } }
Trovare la differenza