首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从C#调用MSBuild

从C#调用MSBuild的方法如下:

  1. 引入Microsoft.Build.Framework和Microsoft.Build.Utilities命名空间。
代码语言:csharp
复制
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
  1. 创建一个自定义的Task类,继承自ToolTask。
代码语言:csharp
复制

public class BuildTask : ToolTask

{

代码语言:txt
复制
// 定义属性和参数
代码语言:txt
复制
[Required]
代码语言:txt
复制
public string ProjectFile { get; set; }
代码语言:txt
复制
public string Target { get; set; }
代码语言:txt
复制
public string Configuration { get; set; }
代码语言:txt
复制
public string Platform { get; set; }
代码语言:txt
复制
public bool NoLogo { get; set; }
代码语言:txt
复制
public bool NoConsoleLogger { get; set; }
代码语言:txt
复制
public bool Verbosity { get; set; }
代码语言:txt
复制
public bool MaxCpuCount { get; set; }
代码语言:txt
复制
public bool NodeReuse { get; set; }
代码语言:txt
复制
public bool DetailedSummary { get; set; }
代码语言:txt
复制
public bool IgnoreProjectExtensions { get; set; }
代码语言:txt
复制
public bool ValidateProjectFile { get; set; }
代码语言:txt
复制
public bool Restore { get; set; }
代码语言:txt
复制
public bool ConsoleLoggerParameters { get; set; }
代码语言:txt
复制
public bool DistributedFileLogger { get; set; }
代码语言:txt
复制
public bool FileLogger { get; set; }
代码语言:txt
复制
public bool FileLoggerParameters { get; set; }
代码语言:txt
复制
public bool GraphBuild { get; set; }
代码语言:txt
复制
public bool Interactive { get; set; }
代码语言:txt
复制
public bool IsolateProjects { get; set; }
代码语言:txt
复制
public bool LogCommand { get; set; }
代码语言:txt
复制
public bool LogOutput { get; set; }
代码语言:txt
复制
public bool LowPriority { get; set; }
代码语言:txt
复制
public bool Maxcpucount { get; set; }
代码语言:txt
复制
public bool MSBuildArchitecture { get; set; }
代码语言:txt
复制
public bool MSBuildExtensionsPath { get; set; }
代码语言:txt
复制
public bool MSBuildExtensionsPath32 { get; set; }
代码语言:txt
复制
public bool MSBuildExtensionsPath64 { get; set; }
代码语言:txt
复制
public bool MSBuildLoadMicrosoftTargetsReadOnly { get; set; }
代码语言:txt
复制
public bool MSBuildNodeMode { get; set; }
代码语言:txt
复制
public bool MSBuildSdksPath { get; set; }
代码语言:txt
复制
public bool MSBuildToolsPath { get; set; }
代码语言:txt
复制
public bool MSBuildToolsVersion { get; set; }
代码语言:txt
复制
public bool MSBuildVersion { get; set; }
代码语言:txt
复制
public bool NoAutoResponse { get; set; }
代码语言:txt
复制
public bool NoConsoleLogger { get; set; }
代码语言:txt
复制
public bool NoLogo { get; set; }
代码语言:txt
复制
public bool NonInteractive { get; set; }
代码语言:txt
复制
public bool OutputResolver { get; set; }
代码语言:txt
复制
public bool Preprocess { get; set; }
代码语言:txt
复制
public bool ProvideProjectDesignation { get; set; }
代码语言:txt
复制
public bool Quiet { get; set; }
代码语言:txt
复制
public bool Rebuild { get; set; }
代码语言:txt
复制
public bool RestorePackages { get; set; }
代码语言:txt
复制
public bool ShowCommandLine { get; set; }
代码语言:txt
复制
public bool ShowConfigFile { get; set; }
代码语言:txt
复制
public bool ShowDescription { get; set; }
代码语言:txt
复制
public bool ShowEventId { get; set; }
代码语言:txt
复制
public bool ShowHelp { get; set; }
代码语言:txt
复制
public bool ShowTargetFrameworkMoniker { get; set; }
代码语言:txt
复制
public bool ShowTimestamp { get; set; }
代码语言:txt
复制
public bool SkipCompilerExecution { get; set; }
代码语言:txt
复制
public bool StopOnFirstFailure { get; set; }
代码语言:txt
复制
public bool TargetFrameworkMoniker { get; set; }
代码语言:txt
复制
public bool TargetFrameworkVersion { get; set; }
代码语言:txt
复制
public bool TargetPath { get; set; }
代码语言:txt
复制
public bool Timeout { get; set; }
代码语言:txt
复制
public bool Toolset { get; set; }
代码语言:txt
复制
public bool Validate { get; set; }
代码语言:txt
复制
public bool Version { get; set; }
代码语言:txt
复制
public bool WarningLevel { get; set; }
代码语言:txt
复制
public bool WarningsAsErrors { get; set; }
代码语言:txt
复制
public bool WarningsNotAsErrors { get; set; }
代码语言:txt
复制
// 重写Execute方法
代码语言:txt
复制
protected override string GenerateCommandLineCommands()
代码语言:txt
复制
{
代码语言:txt
复制
    CommandLineBuilder builder = new CommandLineBuilder();
代码语言:txt
复制
    builder.AppendSwitch("/t:" + Target);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/p:Configuration=", Configuration);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/p:Platform=", Platform);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/nologo", NoLogo);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/noconsolelogger", NoConsoleLogger);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/v:", Verbosity);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/maxcpucount:", MaxCpuCount);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/nodeReuse:", NodeReuse);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/detailedsummary", DetailedSummary);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/ignoreProjectExtensions", IgnoreProjectExtensions);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/validateProjectFile", ValidateProjectFile);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/restore", Restore);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/consoleLoggerParameters", ConsoleLoggerParameters);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/distributedFileLogger", DistributedFileLogger);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/fileLogger", FileLogger);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/fileLoggerParameters", FileLoggerParameters);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/graphBuild", GraphBuild);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/interactive", Interactive);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/isolateProjects", IsolateProjects);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/logCommand", LogCommand);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/logOutput", LogOutput);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/lowPriority", LowPriority);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/maxcpucount", MaxCpuCount);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildArchitecture", MSBuildArchitecture);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildExtensionsPath", MSBuildExtensionsPath);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildExtensionsPath32", MSBuildExtensionsPath32);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildExtensionsPath64", MSBuildExtensionsPath64);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildLoadMicrosoftTargetsReadOnly", MSBuildLoadMicrosoftTargetsReadOnly);
代码语言:txt
复制
    builder.AppendSwitchIfNotNull("/MSBuildNodeMode
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从零开始构建MSBuild C#项目文件

本文参考自MSDN的一篇文章,从零开始创建MSBuild C#项目文件。 准备条件 一个好用的文本编辑器,例如Atom或者Sublime Text。 MSBuild命令行工具。...; } } 将文件保存之后,就可以在命令提示符中使用C#编译器工具csc编译该文件了。...msbuild helloworld.csproj /t:Build 增加构建目标 在构建过程中可以指定多个构建目标,可以指定一个目标调用其他目标,还可以指定默认的构建目标。...指定这两个属性之后,MSBuild就会在运行此目标的时候检查输入和输出文件。如果输入文件相对于输出文件都是最新的,那么MSBuild就会跳过构建过程。...微软和C#社区定义了很多任务,可以分别在其MSBuild任务参考和MSBuild Community Tasks中找到。

1.1K20
  • 如何C# 平台调用云开发?

    我一直在关注微信生态开发领域和云开发,看到有不少开发者需要服务端 SDK,在服务端调用云开发的数据库和函数,便在我自己的 SDK 中加入了相关的能力,帮助更多的开发者开发出更好的应用 ▌关于 SDK Senparc.Weixin...SDK 是目前使用率最高的微信 C#/.NET SDK,包括了微信公众号、小程序、开放平台、微信支付、企业微信、微信硬件平台等几乎全套接口。...以下以使用 .NET Core 开发的小程序为例,开发一个可以调用腾讯云的云函数接口的项目。...4.调用小程序云开发的云函数 高级接口可以在任意地方出发,这里为了方便演示,我们将其放置在首页中。...如果有兴趣,可以发送您的开源项目、希望和云开发的合作方式等信息到 cloudbase@tencent.com 云开发目前已有两个不同语言的社区 SDK:Golang 和 C#, 除了这两门语言,你还期待什么语言

    1.8K74

    Roslyn 如何使用 MSBuild Copy 复制文件

    本文告诉大家如何MSBuild 里使用 Copy 复制文件 需要知道 Rosyln 是 MSBuild 的 dotnet core 版本。...在 MSBuild 里可以使用很多命令,本文告诉大家如何使用 Copy 这个 Task 来复制文件 在开始本文之前,希望大家已经知道了一些关于 csproj 文件格式,如果还是不知道,请看理解 C# 项目...因为文件复制到文件的代码太多了,如果只是需要把文件都放在相同的文件夹,可以使用下面的方法 文件到文件夹 如果需要把文件都复制到相同的文件夹,可以使用下面代码 <Target Name="Copy"...更多 MSBuild 相关博客请看 理解 C# 项目 csproj 文件格式的本质和编译流程 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 如何使用...MSBuild Target(Exec)中的控制台输出 - walterlv 更多关于 Roslyn 请看 手把手教你写 Roslyn 修改编译 参见:专栏:Roslyn 入门 - CSDN博客 --

    1.4K30

    如何通过命令行 msbuild 编译项目

    本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的安装文件夹...中文名是开发者命令行 打开之后默认是 C 盘的一个路径,假如自己的项目所在文件夹是 D:\lindexi\github 需要先通过 cd 将命令行的工作路径修改为当前需要编译的路径,通过下面命令可以...对于一个新的仓库,首先需要还原所有安装的 Nuget 包,此时建议将 Nuget 这个程序加入到环境变量,可以 官网 下载最新版本的 Nuget 程序,如我下载了 5.0 的版本,我将下载的 Nuget...Nuget.exe 然后将 D:\lindexi\nuget.exe 加入到环境变量 在 Windows 将某个文件夹加入到环境变量的方法是右击此电脑属性(如果现在还有开发者使用的是 Windows7 那么请自己百度如何将某个文件夹添加到环境变量...:rebuild 这里的 -t 就是调用某个 Target 的代码,这里的 -p 就是定义一个属性,关于 Target 和属性请看 理解 C# 项目 csproj 文件格式的本质和编译流程 更多编译相关请看手把手教你写

    7.4K20

    C# powshell 调用

    本文告诉大家如何在 ps 脚本使用 C# 代码。 首先创建一个 C# 的控制台项目,注意修改输出为类库。...在 MaKutownene.ps1 使用代码调用 C# 的库很简单,首先引用 dll ,使用 Add-Type –Path 就可以输入 dll 的文件路径 Add-Type –Path "MerRear.dll..." 下面来告诉大家如何在 Powershell 创建 C# 类 Powershell 创建 C# 类 可以使用下面代码创建 C# 类,因为 Powershell 脚本的写法和 C# 还是存在一些不同 $...方法可以使用下面代码 $obj.ViwhawSterenekooSirberheeFarzere() Powershell 调用 C# 静态方法 在 C# 使用静态方法是不需要创建类,所以在 Powershell...就需要使用下面代码调用 [MerRear.TrallrahurmuSorhardu]::FutrowxeBemelvamere() 调用静态方法的方式是使用 [命名空间.类]::静态方法() 调用 下面就是全部的

    80410

    C# powshell 调用

    本文告诉大家如何在 ps 脚本使用 C# 代码。 首先创建一个 C# 的控制台项目,注意修改输出为类库。...在 MaKutownene.ps1 使用代码调用 C# 的库很简单,首先引用 dll ,使用 Add-Type –Path 就可以输入 dll 的文件路径 Add-Type –Path "MerRear.dll..." 下面来告诉大家如何在 Powershell 创建 C# 类 Powershell 创建 C# 类 可以使用下面代码创建 C# 类,因为 Powershell 脚本的写法和 C# 还是存在一些不同 $...方法可以使用下面代码 $obj.ViwhawSterenekooSirberheeFarzere() Powershell 调用 C# 静态方法 在 C# 使用静态方法是不需要创建类,所以在 Powershell...就需要使用下面代码调用 [MerRear.TrallrahurmuSorhardu]::FutrowxeBemelvamere() 调用静态方法的方式是使用 [命名空间.类]::静态方法() 调用 下面就是全部的

    1.3K10

    一文搞定SonarQube接入C#(.NET)代码质量分析

    Sonar检测C#代码时需要预先编译,而且C#代码必须用MSbuid进行编译,如果需要使用SonarQube对C#进行代码质量分析,则需要下载Sonar-Scanner-MSBuildMSBuild,...MSBuild安装与配置 Visual Studio IDE在编译*.sln解决方案时默认是调用msbuild.exe来实现的。...将MSBuild.exe添加到Path环境变量,便于后面在命令行中调用MSBuild。...4、由于示例中的Jenkins服务是部署在Linux系统中,故此处可添加一台Windows主机(10.0.0.148)作为C#项目编译运行环境,在Windows节点配置中,添加并配置相应工具,如下图所示...解决方法: 登录节点10.0.0.148(windows主机),右击我的电脑选择管理然后管理界面里面找到服务或者在cmd界面输入services.msc打开服务管理界面,服务管理界面找到jenkins

    5.2K31

    C#中方法的调用

    1.同一个类中方法的调用: 静态方法可以直接调用静态方法 静态方法不能直接调用非静态方法,静态方法先生成。...非静态方法可以直接调用静态方法 如果静态方法要调用非静态的方法,必须使用实例成员 2.不同类中方法的调用 静态方法,使用类名.静态方法名称() 非静态方法使用,类的实例对象.方法名称() 3.方法的调用遵循的原则...{ class Program { /* * 方法调用遵循的原则:一一对应原则,永远都是第一个实参赋值给第一个形参 * 1.类型需要一致...GetName(age:, lastName: "fangsheng", firstName: "cao" ); //正确的调用方式,可以不必按照方法参数的顺序调用方法。...【命名参数的方式调用】 //GetName(lastName: "fangsheng", firstName: "cao",23);//错误调用方法的例子:命名参数必须出现在所有指定的固定参数后面

    1.2K30
    领券