Tôi không chắc chắn nên đi đâu với điều này. Mục tiêu tổng thể là có thể lấy một kịch bản người dùng và thực hiện nó trong môi trường .NET. Tôi có hầu hết các mã được viết và những thứ làm việc được cung cấp tôi không cố gắng để tải hội đồng của riêng tôi. Tuy nhiên, để cung cấp cho người dùng quyền truy cập vào các phần bên trong của hệ thống một cách an toàn, một proxy proxy đã được tạo. Đây là nơi mà vấn đề dường như là.Đang tải các hội đồng tùy chỉnh với CompileAssemblyFromSource
Ngay bây giờ, proxy proxy này có một thứ trong đó, một giao diện.
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.GenerateInMemory = true;
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("ScriptProxy.dll");
Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
CompilerResults result = provider.CompileAssemblyFromSource(options, script);
// This line here throws the error:
return result.CompiledAssembly;
Chạy đoạn mã trên, nó ném các lỗi sau:
System.IO.FileNotFoundException : Could not load file or assembly 'file:///C:\Users...\AppData\Local\Temp\scts5w5o.dll' or one of its dependencies. The system cannot find the file specified.
Tất nhiên suy nghĩ đầu tiên của tôi là, "... và scts5w5o.dll là gì?"
Đây có phải là ScriptProxy.dll
không tải đúng cách hay chính ScriptProxy.dll đang cố tải phụ thuộc vào tệp tạm thời ở đâu đó? Hay nó là một cái gì đó hoàn toàn khác?
Tôi nên đề cập đến, tôi đang thực thi mã này từ trình kiểm tra NUnit. Tôi không chắc liệu điều đó có tạo nên sự khác biệt hay không.
Điều đó có ý nghĩa. Tôi sẽ thử điều này ngay bây giờ. –
Tôi sẽ đánh dấu điều này là câu trả lời vì mặc dù nó không giải quyết được vấn đề theo lời nói, nó đã giúp tôi nhận được thông báo lỗi thực sự gần như là hữu ích! –
Vì vậy, làm thế nào để bạn giải quyết vấn đề thực tế !! – Moumit