dll没有生成

时间:2014-09-18 13:32:30

标签: c# asp.net dll

我在下面有这个代码动态生成dll。此代码适用于Windows窗体应用程序

        var provider = new CSharpCodeProvider();
        var options = new CompilerParameters
        {
            OutputAssembly = "MyTestDll.dll"

        };
        options.ReferencedAssemblies.Add(@"c:\MyFolder\MyTestDll.dll");
        string testsource = "public class Foo {}";

        provider.CompileAssemblyFromSource(options, new[] { testsource });

但是当我在我的Web应用程序中放入相同的代码时,它不会生成任何dll文件。这可能是什么原因?我从未在飞行中生成过dll文件,因此我对此并不太了解。

2 个答案:

答案 0 :(得分:1)

如果是权限问题,它应该在应用程序运行时给出错误,这可能是编译器错误,您需要从CompilerResults中的Errors属性打印

任何错误都将出现在CompileAssemblyFromSource方法返回的CompilerResults的Errors属性中。您是否尝试过将它们打印出来以查看是否有错误?

CompilerResults results = provider.CompileAssemblyFromSource(options, new[] { source });

foreach(CompilerError error in results.Errors)
{
      Console.WriteLine(error.ToString());
}

或者,如果这是一个ASP.NET页面(因为它被标记为asp.net),请使用Response.Write或将错误消息设置为ASP文字控件。

答案 1 :(得分:1)

我成功解决了问题。我不得不添加路径

OutputAssembly = Path.Combine(Path.GetTempPath(), "MyTestDll.dll")

然后我在我的代码中评论了这一行

options.ReferencedAssemblies.Add(@"c:\MyFolder\MyTestDll.dll");