2015-06-27 15 views
6

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); 

Trả lời

7

Lỗi này là c aused bởi dấu chấm phẩy sai sót trong văn bản:

[assembly: AssemblyCopyright("My Company 2015")]; // this results in a compile time error 

nên là:

[assembly: AssemblyCopyright("My Company 2015")] // this does not result in a compile time error 

Và:

[assembly: AssemblyCompany("My Company")]; // this results in a compile time error 

nên là:

[assembly: AssemblyCompany("My Company")] // this does not result in a compile time error 

Loại bỏ họ đã xóa bỏ các lỗi bạn đang thấy.

Các vấn đề liên quan