2013-08-13 36 views
5

Tôi có một giải pháp với hai hội đồng, một trong số này được gọi là Miền và chứa một lớp Sách và lớp Tác giả.Tệp siêu dữ liệu 'Domain.dll' không thể tìm thấy khi sử dụng CSharpCodeProvider tham chiếu dự án

Tôi muốn tạo động một lớp kế thừa từ lớp Sách. Dưới đây là mã của tôi:

public Book CreateBookProxy(Book book) 
    { 
     CSharpCodeProvider cscp = new CSharpCodeProvider(new Dictionary<String, String> { { "CompilerVersion", "v3.5" } }); 
     var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll", "Domain.dll" }, "Proxies.dll", false); 
     parameters.GenerateExecutable = false; 

     var compileUnit = new CodeCompileUnit(); 
     var ns = new CodeNamespace("Proxies"); 
     compileUnit.Namespaces.Add(ns); 
     ns.Imports.Add(new CodeNamespaceImport("System")); 
     ns.Imports.Add(new CodeNamespaceImport("Domain")); 

     var classType = new CodeTypeDeclaration("BookProxy"); 
     classType.Attributes = MemberAttributes.Public; 
     classType.BaseTypes.Add(new CodeTypeReference(typeof(Book))); 
     ns.Types.Add(classType); 
     var results = cscp.CompileAssemblyFromDom(parameters, compileUnit); 

     List<string> errors = new List<string>(); 
     errors.AddRange(results.Errors.Cast<CompilerError>().Select(e => e.ErrorText)); 

     return Activator.CreateInstance(Type.GetType("Proxies.BookProxy, Proxies")) as Book; 
    } 

Tuy nhiên tôi nhận được lỗi sau:

Metadata file 'Domain.dll' could not be found

Domain.dll được tham chiếu trong dự án bắt đầu của tôi lên để nó tồn tại trong thư mục bin tại thời gian chạy.

Thú vị Assembly.Load ("Domain.dll"); ném một FileNotFoundException

Làm cách nào để giải quyết vấn đề này?

+0

Đâu là DLL? – SLaks

+0

Đó là một phần của giải pháp và nó tồn tại trong thư mục bin lúc chạy – Liath

Trả lời

10

tôi sẽ đề nghị một cách rõ ràng xác định vị trí của Domain.dll như sau:

parameters.ReferencedAssemblies.Add(typeof(<TYPE FROM DOMAIN.DLL>).Assembly.Location); 
+0

Điều gì sẽ xảy ra nếu bạn chưa biết loại bạn muốn tải? –

+0

@WilkovanderVeen Sau đó, bạn sẽ phải biết đường dẫn đầy đủ để lắp ráp hoặc thư mục với hội đồng nên được xác định trong [thăm dò] (https://msdn.microsoft.com/en-us/library/823z9h8w.aspx) yếu tố trong cấu hình tập tin. –

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