以编程方式将文件描述添加到c#编译器输出文件

以编程方式将文件描述添加到c#编译器输出文件,c#,compiler-optimization,assemblyinfo,C#,Compiler Optimization,Assemblyinfo,这是我的编译器函数,它工作得很好。但是输出文件没有描述,例如版权、产品版本或文件描述: public static bool CompileFromSource(string source, string output, string icon = null, string[] resources = null) { CompilerParameters cParams = new CompilerParameters { Gene

这是我的编译器函数,它工作得很好。但是输出文件没有描述,例如
版权
产品版本
文件描述

public static bool CompileFromSource(string source, string output, string icon = null, string[] resources = null)
    {
        CompilerParameters cParams = new CompilerParameters
        {
            GenerateExecutable = true,
            OutputAssembly = output
        };

        string options = "/optimize+ /platform:x86 /target:winexe /unsafe";

        cParams.CompilerOptions = options;
        cParams.TreatWarningsAsErrors = false;

        cParams.ReferencedAssemblies.Add("System.dll");
        cParams.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        cParams.ReferencedAssemblies.Add("System.Drawing.dll");
        cParams.ReferencedAssemblies.Add("System.Data.dll");
        cParams.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll");

        if (resources != null && resources.Length > 0)
        {
            foreach (string res in resources)
            {
                cParams.EmbeddedResources.Add(res);
            }
        }

        Dictionary<string, string> providerOptions = new Dictionary<string, string> { { "CompilerVersion", "v2.0" } };
        CompilerResults results = new CSharpCodeProvider(providerOptions).CompileAssemblyFromSource(cParams, source);
}
public static bool CompileFromSource(字符串源,字符串输出,字符串图标=null,字符串[]资源=null)
{
CompilerParameters cParams=新的CompilerParameters
{
GenerateExecutable=true,
OutputAssembly=输出
};
string options=“/optimize+/platform:x86/target:winexe/unsafe”;
cParams.CompilerOptions=选项;
cParams.TreatWarningsAsErrors=false;
cParams.referencedAssemblys.Add(“System.dll”);
添加(“System.Windows.Forms.dll”);
cParams.ReferencedAssembly.Add(“System.Drawing.dll”);
cParams.referencedAssemblys.Add(“System.Data.dll”);
cParams.referencedAssemblys.Add(“Microsoft.VisualBasic.dll”);
if(resources!=null&&resources.Length>0)
{
foreach(资源中的字符串res)
{
cParams.EmbeddedResources.Add(res);
}
}
Dictionary providerOptions=新字典{{“CompilerVersion”,“v2.0”};
CompilerResults results=新的CSharpCodeProvider(providerOptions)。CompileAsemblyFromSource(CPARAM,source);
}

如何在此编译器中以编程方式添加有关文件的描述?我不想使用第三方应用程序,比如
resourceHacker

你能不能先将
[assembly:…]
添加到
源代码字符串中

如果没有,可以在此处找到标准的Roslyn as代码语法:

结果:

CompilationUnit()
    .WithAttributeLists(
        SingletonList<AttributeListSyntax>(
            AttributeList(
                SingletonSeparatedList<AttributeSyntax>(
                    Attribute(IdentifierName("MyAttribute")))) 
               .WithTarget(
                    AttributeTargetSpecifier(
                       Token(SyntaxKind.AssemblyKeyword))))) 
    .WithMembers(
        SingletonList<MemberDeclarationSyntax>(
            NamespaceDeclaration(IdentifierName("S"))
                .WithMembers(
                    SingletonList<MemberDeclarationSyntax>(
                        ClassDeclaration("C")))))
    .NormalizeWhitespace()
编译单元()
.使用属性列表(
单音表(
属性学家(
单音分隔列表(
属性(IdentifierName(“MyAttribute”))
.有目标(
属性说明符(
令牌(SyntaxKind.AssemblyKeyword(()()))
.与成员(
单音表(
名称空间声明(标识符名称(“S”))
.与成员(
单音表(
类声明(“C”()())
.normalize空白()

这可以通过添加以下内容以另一种方式完成:

[assembly: AssemblyTitle("Loader")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Loader")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("f99d6ga6-3b37-43a6-9332-866f8s8g7f9b")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
到要以编程方式编译的源代码的顶部

[assembly: AssemblyTitle("Loader")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Loader")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("f99d6ga6-3b37-43a6-9332-866f8s8g7f9b")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]