如何给我的 roslyn 编译器输出一个图标?
在 codedom 中,我可以简单地使用 CompilerOptions 并将其添加为“/win32icon:”
但是在roslyn怎么办?
我已经有了这个。
var syntaxTree = CSharpSyntaxTree.ParseText(File.ReadAllText("program.cs"));
CSharpCommandLineArguments arguments = new CSharpCommandLineArguments();
arguments.Win32Icon = @"ICON PATH";
CSharpCompilation compilation = CSharpCompilation.Create(
"program",
new[] { syntaxTree },
new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) },
new CSharpCompilationOptions(OutputKind.ConsoleApplication));
ResourceWriter rs = new ResourceWriter("res.resources");
var resourceDescription = new ResourceDescription("program.Resources.resources", () => new MemoryStream(File.ReadAllBytes("res.resources")), true);
using (var dllStream = new MemoryStream())
using (var pdbStream = new MemoryStream())
{
var emitResult = compilation.Emit(dllStream, pdbStream, null,null, manifestResources: new [] {resourceDescription});
if (emitResult.Success)
{
File.WriteAllBytes("test.exe",dllStream.GetBuffer());
Console.WriteLine("compiled");
}
else
{
Console.WriteLine("foutje: {0}", emitResult.Diagnostics[0].ToString());
}
}
Console.ReadLine();
感谢您的帮助!
最佳答案
您需要将 win32Resources 选项传递给通过 Compilation.CreateDefaultWin32Resources
创建的 Emit,该选项采用 Stream iconInIcoFormat
参数。
compilation.Emit(
peStream: peStream,
pdbStream: pdbStream,
win32Resources: compilation.CreateDefaultWin32Resources(..., iconInIcoFormat: File.Open("<pathTo.ico>")))
更详细的例子是 here
关于c# - 使用 Roslyn 发出 Win32Icon,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41111826/