gpt4 book ai didi

c# - 使用 Roslyn 发出 Win32Icon

转载 作者:行者123 更新时间:2023-11-30 16:46:00 29 4
gpt4 key购买 nike

如何为我的 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com