gpt4 book ai didi

c# - Visual Studio AfterBuild 生成代码的任务

转载 作者:行者123 更新时间:2023-11-30 12:26:19 24 4
gpt4 key购买 nike

我想创建一个在 Visual Studio 项目中生成代码的 AfterBuild 任务。问题是因为它是一个 AfterBuild Task,生成的代码不会被编译。

我需要它成为一个 AfterBuild 任务,因为我加载构建的输出程序集并使用反射检查它以生成代码。

有没有办法可以在 AfterBuild 任务之后编译生成的代码?

谢谢。

最佳答案

可以使用 CSharpCodeProvider 在运行时编译 C# 代码上课看这个article ,解释的很好。虽然听起来您似乎想通过注入(inject)您正在 AfterBuild 任务事件中编译的代码来更改(例如编织)您的库。

如果是这种情况,实现您想要做的事情的唯一方法是使用 AOP(面向方面​​的编程)框架,如 PostSharp 或 Mono.Cecil。他们所做的是生成 IL(中间语言)并在运行时或编译时注入(inject)您的程序。

在此answer讨论了一些 .NET 的 AOP 解决方案。

编辑:

要以编程方式编译 c# 项目 (*.csproj),.NET 框架中有特定的类。看Microsoft.Build.Evaluation命名空间。

但是这个片段应该适合你。在您的任务中尝试它,您应该能够从您的代码中触发另一个编译过程。

      const string projectPath = @"your csproj path";
var collection = new Microsoft.Build.Evaluation.ProjectCollection {DefaultToolsVersion = "4.0"};


collection.RegisterLogger(new ConsoleLogger());
collection.LoadProject(projectPath);

var project = new Microsoft.Build.Evaluation.Project(collection);

if (!project.Build())
{
//Error
}

希望对您有所帮助。

关于c# - Visual Studio AfterBuild 生成代码的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com