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

如何在MSBuild任务中指定"Release“而不是debug?

在使用 MSBuild 构建项目时,你可以通过指定配置参数来选择构建配置,例如 "Release" 或 "Debug"。以下是一些常见的方法来在 MSBuild 任务中指定 "Release" 配置。

方法一:在命令行中指定配置

如果你在命令行中使用 MSBuild,你可以通过 /p:Configuration 参数来指定构建配置。

代码语言:javascript
复制
msbuild MyProject.sln /p:Configuration=Release

或者,如果你只想构建特定的项目文件(例如 .csproj 文件):

代码语言:javascript
复制
msbuild MyProject.csproj /p:Configuration=Release

方法二:在 MSBuild 脚本中指定配置

如果你在 MSBuild 脚本(例如 .proj 文件)中定义了自定义任务,你可以通过设置 Configuration 属性来指定构建配置。

以下是一个示例 MSBuild 脚本:

代码语言:javascript
复制
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration>Release</Configuration>
  </PropertyGroup>

  <Target Name="Build">
    <MSBuild Projects="MyProject.csproj" Properties="Configuration=$(Configuration)" />
  </Target>
</Project>

在这个示例中,<PropertyGroup> 元素定义了一个 Configuration 属性,并将其设置为 "Release"。然后,在 <Target> 元素中,<MSBuild> 任务使用这个属性来构建项目。

方法三:在 Visual Studio 中指定配置

如果你在 Visual Studio 中使用 MSBuild,你可以通过解决方案配置管理器来选择构建配置。

  1. 打开解决方案。
  2. 选择 Build 菜单,然后选择 Configuration Manager
  3. Active solution configuration 下拉列表中选择 Release

方法四:在 CI/CD 管道中指定配置

如果你在 CI/CD 管道(例如 Azure DevOps、GitHub Actions 等)中使用 MSBuild,你可以在管道配置文件中指定构建配置。

以下是一个 Azure DevOps YAML 管道示例:

代码语言:javascript
复制
trigger:
- main

pool:
  vmImage: 'windows-latest'

steps:
- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '5.x.x'
    installationPath: $(Agent.ToolsDirectory)/dotnet

- script: |
    dotnet build MyProject.sln --configuration Release
  displayName: 'Build project'

在这个示例中,dotnet build 命令使用 --configuration Release 参数来指定构建配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

msbuild 项目文件常用判断条件

'" 这里 Configuration 的判断是不区分大小写的,默认写的是 Debug DEBUG 是用在条件编译里面 例如这样写 <PropertyGroup Condition=" '$(Configuration...='<em>Debug</em>'" 也就是上面代码反过来判断不是在调试下编译 另一个判断方法请看代码,这是不推荐的判断方法 Condition="'$(Configuration)'=='Release'" 这个不推荐的写法...,一般只有调试下和非调试下,用上面的写法可能有逗比写了 Release-x 于是就判断不是发布下,此时就没有做发布的优化 判断平台 判断在 .NET Framework 4.5 运行 Condition...'" 对应的判断 .NET Standard 使用如下缩写 netstandard1.0 等 判断 .NET Core 使用如下缩写 netcoreapp1.0 等 多个判断 需要同时生效有两个写法,判断只有在...(NET30))" 更多判断请看 Roslyn 在项目文件使用条件判断 MSBuild 如何编写带条件的属性、集合和任务 Condition?

68420
  • MSBuild的简单介绍与使用

    “构造动作”就是通过任务实现的,任务就是MSBuild的扩展机制,通过编写新的任务就能够不断扩充MSBuild的执行能力。...这里还需要强调一点的是,项目级元素(Property)可以在元素下定义,也可以在构造过程作为外部参数传入,这是一个非常有用的特性,一般编译时选择配置项(Debug或者Release)就是利用这个特性实现的...我们都知道,在一个项目的生成过程可能需要完成几项不同的任务(比如编译、单元测试、check-in到源代码控制服务器中等),其中每一项任务都可以用Target来表示。...这样你就无须为了改动一个文件名称让整个项目文件伤筋动骨了。比如上面代码的Bin就是将要创建的路径名称,AssemblyName则是最终要生成的程序集名称。...你可以通过Project的DefaultTargets属性指定MSBuild引擎从哪(几)个Target开始执行,也可以在调用MSBuild.exe时使用t开关来手动指定将要运行的Target,方法如下

    1.3K50

    nuget.exe 还原解决方案 NuGet 包的时候出现错误:调用的目标发生了异常。Error parsing the nested project section in solution file

    |Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection....0 = Debug|Any CPU {98FF9756-B95A-4FDB-9858-5106F486FBF3}.Release|Any CPU.ActiveCfg = Release...可以阅读: 如何安装和准备 Visual Studio 扩展/插件开发环境 - walterlv 我在另外的博客写了解决方案项目类型的内容: 理解 Visual Studio 解决方案文件格式(.sln...) - walterlv 解决方案文件 sln 的项目类型 GUID - walterlv 如果是 nuget 自动识别出来的 MSBuild 版本过旧,则你会同时看到下面的这段提示: NuGet...我在另一篇博客中有写一些决定 MSBuild.exe 版本的方法: 为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild

    35520

    理解 C# 项目 csproj 文件格式的本质和编译流程

    至于为什么会定义多个,原因无外乎两个: 为了可读性——将一组相关的属性放在一起,便于阅读和理解意图(旧的 csproj 谈不上什么可读性) 为了加条件——有的属性在 DebugRelease 下不一样...,只是有很多的 PropertyGroup 加上了 Debug Release 的判断条件才使得不同的 Configuration 具有不同的其他属性,最终表现为编译后的巨大差异。...由于 Configuration 属性可以放任意字符串,所以甚至可以定义一个非 DebugRelease 的配置(例如用于性能专项测试)也是可以的。....targets 文件便包含了 msbuild 定义的各种核心编译任务。...只要引入了这个 .targets 文件,便能使用 msbuild 自带的编译任务完成绝大多数项目的编译。

    2.6K10

    Roslyn 在项目文件使用条件判断 判断不相等判断大小判断文件存在判断多个条件使用的范围

    本文告诉大家如何在项目文件通过不同的条件使用不同的方法运行 本文是 手把手教你写 Roslyn 修改编译 的文章,在阅读本文之前,希望已经知道了大多数关于 msbuild 的知识 为了告诉大家如何使用判断...加入到环境变量,就需要使用这个方法来调用 msbuild 调用 msbuild 的原因是为了编译可以看到输出。...Name="StanalurJikecair" AfterTargets="CoreCompile" Condition="'$(Configuration)|$(TargetFramework)'=='Release..."> error MSB4086: 尝试在条件“'AA '>'10'”对计算结果为...“AA”不是数字的“AA”进行数值比较 判断文件存在 在条件判可以用 Exists 判断文件 文件夹是否存在 <Target Name="StanalurJikecair" AfterTargets

    2.7K10

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

    这里,名为Build的Target就包括了Csc任务来编译一个文件,使用Source属性来指定要编译的文件。另外还有一些任务,会在下面说明。...几乎每个任务都可以添加一个Condition属性,指定什么条件下执行该任务。这里是在输出目录不存在的情况下才执行该任务,创建目录。...另外微软建议我们在定义目录属性的时候,最好将目录后面的反斜杠\定义到属性不是加在引用之后。...msbuild helloworld.csproj /t:Build 增加构建目标 在构建过程可以指定多个构建目标,可以指定一个目标调用其他目标,还可以指定默认的构建目标。...微软和C#社区定义了很多任务,可以分别在其MSBuild任务参考和MSBuild Community Tasks中找到。

    1.1K20

    MSBuild入门(续)

    MSBuild属性 上篇介绍到可以用$可以引用自定义的属性,除此之外亦可以引用系统的环境变量,$(Path),以及 MSBuild保留属性(MSDN)。...属性还有一种叫做任务发出属性,在上篇用到了,由Output元素的PropertyName特性指定了属性名,这类属性不像一般的声明式属性那样赋值,而是动态得到的值。是在项目文件很常见的用法。...MSBuild项 项大都是用来引入文件用的,文件会有一些附加信息,比如版本,语言等,而这些附加信息在项目文件是以项的子元素的出现的,称为项的元数据。...如果任务有输出参数的话,Output元素总是作为任务的子元素出现,作为一个中间桥梁把任务的输出传输到属性或者项。...由于属性在MSBuild中有特殊含义,则MSDN文档一律把项目文件的xml属性称作是特性,比如Message任务的Text特性。如有错误之处,欢迎指正!

    95790

    .NET魔法堂:工程构建基石->MSBuild

    VS右键打开项目菜单, ? 对应MSBuild的Build目标, ? 对应MSBuild的Rebuild目标, ? 对应MSBuild的Clean目标, ?...对应MSBuild的PublishOnly目标。 到这里我想大家都明白MSBuild就和Ant一样就是一个用于项目构建的任务执行引擎,只不过它被融入到VS,降低了入门难度。...在VS2013下新建名为LearnMSBuild的MVC4项目,然后在项目目录下有LearnMSBuild.csproj和LearnMSBuild.csproj.user两个项目文件,里面就是MSBuild...执行引擎内置部分预定义的Item,具体如下: image.png MSBuild执行引擎为每个Item预设的元数据,具体如下: 元数据名 元数据说明 FullPath 当前项所指向的文件的绝对路径...直接在项目文件编写任务不必引用外部包含继承ITask接口的类的程序集       2.

    2K80

    win10 uwp 使用 msbuild 命令行编译 UWP 程序

    本文告诉大家如何使用 msbuild 命令行编译一个 UWP 程序 在有一些时候,使用持续集成的时候就不能通过 VisualStudio 的方式编译 UWP 程序,需要使用命令行的方式编译。...=x86 现在就可以编译 DEBUG 下的 x86 程序了 如果需要编译同时输出,可以尝试下面的代码。...=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm" 如果是需要编译其他的解决方案,也就是当前的工作文件夹不在指定的项目文件夹,可以在 msbuild 后面添加解决方案的路径...StoreUpload /p:AppxBundlePlatforms="x86|x64|arm" 如果是桌面转换制作的,此时命令行要求 AppxBundlePlatforms 的值是 neutral ...Platform 要求 AnyCPU 才可以编译 msbuild /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir="D:

    83220

    如何创建一个基于命令行工具的跨平台的 NuGet 工具包

    我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...所以,我们需要进行“一番配置”,使得这个项目编译成一个NuGet 工具,不是一个依赖包。...上面的文件,我们指定 Target 的执行时机为 CoreCompile 之前,也就是编译那些 .cs 文件之前。在这个时机,我们可以修改要编译的 .cs 文件。...: 如何在 MSBuild Target(Exec)中报告编译错误和编译警告 使用命令执行完之后的结果 如果只是传入参数,那么我们顶多只能干一些不痛不痒的事情,我们应该使用我们的控制台程序做一些什么...如果你要在编译期间替换一个类不是新增一个类,例如将 Class1.cs 更换成新类,那么需要将其从编译列表移除: <!

    1K20

    win10 uwp 使用 msbuild 命令行编译 UWP 程序

    本文告诉大家如何使用 msbuild 命令行编译一个 UWP 程序 在有一些时候,使用持续集成的时候就不能通过 VisualStudio 的方式编译 UWP 程序,需要使用命令行的方式编译。...=x86 现在就可以编译 DEBUG 下的 x86 程序了 如果需要编译同时输出,可以尝试下面的代码。...=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm" 如果是需要编译其他的解决方案,也就是当前的工作文件夹不在指定的项目文件夹,可以在 msbuild 后面添加解决方案的路径...注意这个路径需要使用 csproj 文件 msbuild "D:\lindexi\UWP\Foo.csproj" /t:restore /t:Publish /p:Configuration=Release...nuget 网站,如果自己用了内部的 nuget 就需要自己添加 msbuild /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir

    1.3K20

    dotnet run

    在项目上下文,不是生成程序集中使用 dotnet run 命令。 如果尝试改为运行依赖于框架的应用程序 DLL,则必须在不使用命令的情况下使用 dotnet。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 使用指定框架生成并运行应用。 框架必须在项目文件中进行指定。...若要将 --property 传递给应用程序不是设置 MSBuild 属性,请在 -- 语法分隔符后面提供该选项,例如: dotnet run -- --property name=value -r|.../projects/proj1/proj1.csproj 运行当前目录的项目,并指定 Release 配置: dotnet run --property:Configuration=Release 运行当前目录的项目...(在本例,--help 参数被传递到应用程序,因为使用了空白的 -- 选项): dotnet run --configuration Release -- --help 在仅显示最小输出的当前目录还原项目的依赖项和工具

    1.5K20
    领券