Để thử nghiệm tôi đã sử dụng một ứng dụng Console với mã nguồn sau đây:Compile trong thời gian chạy (thế hệ dll) bên trong một ứng dụng MVC 3
public string CODEInString = @"namespace MyNamespace.Generator
{
public class Calculator
{
public int Sum(int a, int b)
{
return a + b;
}
}
}";
public void Create()
{
var provider = new CSharpCodeProvider();
var cp = new CompilerParameters
{
GenerateInMemory = false,
OutputAssembly = "AutoGen.dll"
};
provider.CompileAssemblyFromSource(cp, CODEInString);
}
Với mã này bên trong một ứng dụng giao diện điều khiển tôi có thể làm cho nó hoạt động và AutoGen Tệp .dll được tạo, từ thời điểm đó tôi có thể lập hóa đơn các phương thức của máy tính.
Sự cố của tôi xảy ra khi tôi làm cùng mã nhưng bên trong ứng dụng MVC 3. Tôi có thể bắt ngoại lệ nếu tôi sử dụng biến sau.
var compileResult1 = provider.CompileAssemblyFromSource(cp, CODEInString);
'compileResult1.CompiledAssembly' ném một ngoại lệ kiểu System.IO.FileNotFoundException'
Tôi cũng cố gắng sử dụng Server.MapPath ("~/bin /") nói với thư mục đầu ra .
Ai đó có thể giúp tôi ở đây? Cảm ơn bạn
UPDATE 1 Tôi đưa điều khoản thư mục để người dùng đúng để viết, vì vậy đó không phải là vấn đề.
Còn tham chiếu thì sao? Tất cả họ có ở đó không? –
Bạn đang đề cập đến cái nào? – Dryadwoods
Biên dịch nó 'InMemory'. – leppie