Tôi tìm một số điều ngớ ngẩn đang diễn ra vì các thuộc tính mức lắp ráp còn lại có thể được bao gồm tốt nhưng bất cứ khi nào AssemblyCopywriteAttribute
hoặc AssemblyCompanyAttribute
được khai báo là kết quả trong lỗi CS0116 và CS1730. Cho rằng mã không chứa bất kỳ khai báo phương pháp nào tôi không thấy cách CS0116 được áp dụng và không có định nghĩa kiểu nào xen kẽ nên không chắc chắn cách áp dụng CS1730.Biên dịch lỗi khi sử dụng AssemblyCopyrightAttribute hoặc AssemblyCompanyAttribute thông qua CodeDomProvider
lỗi
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
Source File:
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")]
Compilation logic
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);