【发布时间】:2018-04-30 19:47:06
【问题描述】:
程序A:输出一个c#函数,并将该函数插入到另一个c#项目B中的文件(例如Classifier.cs)中。这些步骤已经实现。
我想知道有什么方法可以在项目A中以编程方式构建和编译c#项目B。所以我可以点击项目A中的一个按钮,它会自动将新功能插入项目B,构建,编译项目B. 最后启动新项目 B。
谢谢。
【问题讨论】:
标签: c#
程序A:输出一个c#函数,并将该函数插入到另一个c#项目B中的文件(例如Classifier.cs)中。这些步骤已经实现。
我想知道有什么方法可以在项目A中以编程方式构建和编译c#项目B。所以我可以点击项目A中的一个按钮,它会自动将新功能插入项目B,构建,编译项目B. 最后启动新项目 B。
谢谢。
【问题讨论】:
标签: c#
现在有很多 .NET 编译程序集已过时。 对于编译,请使用 Microsoft.Build。
首先,添加以下引用:
其次,导入:
using Microsoft.Build.Evaluation;
最后,写下这段代码:
var configuration = "Release";
var projectDirectory = @"C:\blabla";
var collection = ProjectCollection.GlobalProjectCollection;
var project = collection.LoadProject($@"{projectDirectory}\MyProject.csproj");
project.SetProperty("Configuration", configuration);
project.Build();
【讨论】:
无需执行新进程。 .NET 为我们提供了一种以编程方式调用 C# 编译器的方法。我发现这种技术效果很好:
http://blogs.msdn.com/b/dohollan/archive/2010/08/09/programmatically-invoke-the-c-compiler.aspx
【讨论】:
假设您使用的是 Visual Studio,您可以对您的 ProjectB.csproj 运行 MSBuild。这样,您的项目构建应该与在 Visual Studio 中构建的方式相同。
【讨论】: