Как назначить свойства сборки, такие как Title и ProductName сборки, скомпилированной с помощью компилятора Roslyn в C# - PullRequest
0 голосов
/ 15 февраля 2020

Мне нужно генерировать сборку во время выполнения, поэтому я генерирую файлы классов и компилирую их с помощью компилятора Roslyn. Выходной dll не имеет таких свойств, как заголовок, номер версии и т. Д. c. Я пытался включить AssemblyInfo.cs также во время компиляции, это не помогло.

Шаги, которые я выполнил - 1. Создал AssemblyInfo.cs с содержимым -

var fileContent = 
   "using System.Reflection;\n" +
   "using System.Runtime.InteropServices;\n" +
   "[assembly: AssemblyTitle(\"" + "Foo" + "\")]\n" +
   "[assembly: AssemblyDescription(\"" + "\")]\n" +
   "[assembly: AssemblyConfiguration(\"" + "\")]\n" +
   "[assembly: AssemblyCompany(\"" + "\")]\n" +
   "[assembly: AssemblyVersion(\"1.0.0.0\")]\n"+
   "[assembly: AssemblyProduct(\"" + "Foo" + "\")]\n" +
   "[assembly: AssemblyCopyright(\"" + "Copyright ©  2010" + "\")]\n" +
   "[assembly: AssemblyTrademark(\"" + "\")]\n" +
   "[assembly: AssemblyCulture(\"" + "\")]\n" + 
   "[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n" +
   "[assembly: Guid(\"" + "Some GUID here"+"\")]\n";

Создано parsedSyntaxTree со всеми файлами .cs, включая AssemblyInfo.cs

var compilerParameters = 
            new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)
            .WithOptimizationLevel(OptimizationLevel.Release)
            .WithWarningLevel(0);

var compiler = CSharpCompilation.Create(assemblyName,parsedSyntaxTree, 
                                            references, compilerParameters);

compiler.Emit(assemblyPath, assemblyPdbPath, manifestResources: resources);

Сгенерированный выходной dll не имеет информация свойства в нем.

...