在 运行 时编译排除由 CodeDom 生成的 class

Compile at run time exclude class that is generated by CodeDom

我使用 CodeDom 生成了 class 所谓的 "Product.cs",我的 class 是在正确的路径中生成的,但是我的代码不能完美和完整地工作,因为这个 "Product.cs" 从我的解决方案中排除,我必须在 运行 时间包含它 我搜索并找到了创建 csc.exe 和加载程序集的方法以便编译我的 class 在 运行 时间并将其包含在我的解决方案中,之后我可以在 "Product.cs".

上工作

我在 Visual Studio 2013 年在 MVC 等 Web 应用程序上编写代码。 提前感谢您的帮助。

它会为你工作。我刚试过,看评论

  • 如果要包含 class 个文件,请编辑项目文件。该文件是一个 xml 文件。您可以轻松地对其进行编辑。要知道标签,我建议请在任何文本编辑器(如记事本)中打开项目文件,使用 MSBuild 或任何您想用来构建项目的工具。
  • 如果要生成和创建项目,请参阅反射。另外,检查一下:http://www.codeproject.com/Articles/10324/Compiling-code-during-runtime

要包含排除文件,特别是当它是由代码生成方法(如 CodeDom 或 EnvDTE 等)生成时,应遵循:

  1. 右键单击解决方案上的参考资料
  2. Select 程序集 -> Microsoft.Build
  3. 写出这样的代码:

    var p = new Microsoft.Build.Evaluation.Project(@"D:\MVCNHibernate\MVCNHibernate\MVCNHibernate.csproj");
     p.AddItem("Compile", @"D:\MVCNHibernate\MVCNHibernate\Entities\Product.cs");
     p.Save();
     p.Build();

然后"Product.cs"将是您在项目或解决方案中包含的文件,并且可以使用它。