Я пытаюсь скомпилировать некоторый простой код (класс ac #), который использует собственный атрибут. CSharpCodeCompiler не выдает ошибку, если мои свойства класса не используют пользовательский атрибут.
это моя строка:
string _string = @"
using System;
using System.Collections.Generic;
namespace Generator
{
public class ExampleClass
{
public int id { get; set; }
}
}"
var csc = new CSharpCodeProvider();
var cc = csc.CreateCompiler();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("mscorlib.dll");
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.ComponentModel.DataAnnotations.dll");
cp.ReferencedAssemblies.Add("System.ComponentModel.dll");
cp.ReferencedAssemblies.Add("System.Runtime.InteropServices.dll");
cp.ReferencedAssemblies.Add(typeof(GUID).Assembly.Location);
CompilerResults results = csc.CompileAssemblyFromSource(cp, _string);
System.Reflection.Assembly _assembly = results.CompiledAssembly;
Type[] _types = _assembly.GetTypes();
Type eType = _assembly.GetType(namespaceAndClass);
Он отлично скомпилирован с приведенным выше кодом. Но если я использую свой собственный атрибут, он выдаст ошибку.
Мой класс атрибута:
using System;
namespace Generator
{
[AttributeUsage(AttributeTargets.All)]
class GUID : Attribute
{
private string guid { get; set; }
public GUID()
{
this.guid = Guid.NewGuid().ToString();
}
public GUID(string value)
{
this.guid = value;
}
public string getGuid()
{
return guid;
}
}
}
Мне нужно, чтобы строка была скомпилирована с моими пользовательскими атрибутами ... [GUID ()] public int id {get;установлен;}
Когда я пытаюсь это сделать, я получаю эту ошибку: Возникло исключение: 'System.IO.FileNotFoundException' в mscorlib.dll