Geri kalan derleme düzeyi öznitelikleri çok iyi eklendiğinden ancak AssemblyCopywriteAttribute
veya AssemblyCompanyAttribute
bildirildiğinde CS0116 ve CS1730 hatalarıyla sonuçlandığı için aptalca bir şey olduğunu anladım. Kodun herhangi bir yöntem bildirimi içermediğini göz önünde bulundurduğumda, CS0116'un nasıl uygulandığını görmüyorum ve serpiştirilmemiş tür tanımları yok, dolayısıyla CS1730'un nasıl uygulanacağından emin değilsiniz.CodeDomProvider aracılığıyla AssemblyCopyrightAttribute veya AssemblyCompanyAttribute kullanırken derleme hatası
Hatalar
Error Number: CS0116
Error Text: A namespace cannot directly contain members such as fields or methods
Error Number: CS1730
Error Text: Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations
Kaynak Dosya:
using System;
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
[assembly: CLSCompliant(false)]
[assembly: AssemblyCompany("My Company")]; // this results in a compile time error
[assembly: Guid("9d8271d9-957f-46dc-bcc6-1055137b4fad")]
[assembly: AssemblyTitle("CCDA MAP")]
[assembly: AssemblyDescription("The mapping logic to source a CXD and populate a CCDA")]
[assembly: AssemblyCopyright("My Company 2015")]; // this results in a compile time error
[assembly: AssemblyCulture("en-US")]
[assembly: AssemblyVersion("2.2.0")]
[assembly: AssemblyFileVersion("2.2.0.123")]
[assembly: AssemblyConfiguration("DEBUG")]
[assembly: AssemblyMetadataAttribute("Built","06/27/2015")]
[assembly: AssemblyMetadataAttribute("Host","JORMUNGANDR")]
[assembly: AssemblyMetadataAttribute("The answer","42")]
[assembly: AssemblyMetadataAttribute("Document Type","CCDA")]
[assembly: AssemblyMetadataAttribute("Document Spec Version","2.0")]
Derleme Mantık
CodeDomProvider provider = CodeDomProvider.CreateProvider("C#");
var source = Directory.GetFiles(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),"codedom"),"*.cs").ToList().Dump("Map Source").Select(i=>File.ReadAllText(i)).ToArray();
var parameters = new CompilerParameters{ GenerateInMemory = true, OutputAssembly = string.Format("Map.dll",count),TreatWarningsAsErrors = true, WarningLevel = 4};
parameters.ReferencedAssemblies.Add("mscorlib.dll");
var results = provider.CompileAssemblyFromSource(parameters, source);