如何使用c#以编程方式编译发行版中的项目和解决方案?

如何使用c#以编程方式编译发行版中的项目和解决方案?,c#,compiler-construction,build-automation,C#,Compiler Construction,Build Automation,我的困境是,我需要根据文件中指定的配置设置编译大量的项目和解决方案。我找到了几种不同的方法来实现这一点,并且我使用了类,该类最近已被弃用 下面是一些示例代码,说明了它的用法:(注意node.Path是项目文件的路径) 我的问题-它在调试中编译:( 查看类的成员并没有多大帮助,因为没有太多的属性公开。一个提示是属性,它似乎允许设置一些项目构建选项。但是不清楚如何在发布版中输出对BuildProjectFile的调用 非常感谢您的帮助!我不明白您为什么需要不断编译。您提到的设置文件应该在app.co

我的困境是,我需要根据文件中指定的配置设置编译大量的项目和解决方案。我找到了几种不同的方法来实现这一点,并且我使用了类,该类最近已被弃用

下面是一些示例代码,说明了它的用法:(注意node.Path是项目文件的路径)

我的问题-它在调试中编译:(

查看类的成员并没有多大帮助,因为没有太多的属性公开。一个提示是属性,它似乎允许设置一些项目构建选项。但是不清楚如何在发布版中输出对BuildProjectFile的调用


非常感谢您的帮助!

我不明白您为什么需要不断编译。您提到的设置文件应该在app.config或web.config中(取决于它是web服务).Settings文件不应更改应用程序代码的编译。如果是,我建议您更改编程模型,以允许在不重新编译的情况下更改设置。

您必须通过代码来完成此操作吗?您可能会发现,使用类似的工具会更容易,而且它相当全面,可以很容易地指定哪种tar开始构建,例如:

  <msbuild project="${ProjectBasePath}\${ProjectName}.sln">
    <property name="Configuration" value="debug"/>
  </msbuild>
msbuild.exe project.proj /t:rebuild /p:Configuration=Debug
nant与msbuild相比的优势在于,您可以编写构建过程的脚本。我个人认为,它非常容易使用,并且您可以从中获得很大的功能和灵活性

您也可以直接调用Visual Studio:

devenv.exe /Rebuild release "ProjectName.sln" /Out "c:\vs_errors.txt"

这也会将生成输出输出到
c:\vs_errors.txt

是否需要在代码中执行此操作,或者从命令行/脚本运行msbuild就足够了?(如果只使用msbuild,会为您节省很多麻烦)我同意@Nos,那么您就可以为MSBuild提供必要的参数和标志,以自定义您想要的版本。我为您和您提供+1-通过命令行、脚本甚至批处理文件创建MSBuild是迄今为止最简单的方法。也许我的措词错误。我的想法是,我的程序在运行时将编译大量的projec设置文件并不是一个真正的问题,除非它们具有复制DLL、运行单元测试等预构建或后构建任务。
devenv.exe /Rebuild release "ProjectName.sln" /Out "c:\vs_errors.txt"