msbuild 相关问题

Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。

如何在 C#8.0 中使用 BuildManager?

我有一个 .csproj 配置如下: 执行 net8.0 我有一个 .csproj 配置如下: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project> 当我使用以下 msbuild 命令时,我可以构建项目。 msbuild MyProject.csproj /t:Restore;Rebuild;Publish /p:PublishSingleFile=True /p:SelfContained=True /p:PublishProtocol=FileSystem /p:Configuration=Release /p:PublishDir=bin\Release\Test /p:RuntimeIdentifier=win-x86 /p:PublishReadyToRun=False /p:PublishTrimmed=False 但是我想使用 BuildManager 来代替。 我尝试过以下代码: var properties = new Dictionary<string, string> { ["Configuration"] = "Release", ["Platform"] = "x86", ["RuntimeIdentifier"] = "win-x86", ["SelfContained"] = "True", ["PublishSingleFile"] = "True", ["PublishReadyToRun"] = "False", ["PublishTrimmed"] = "False", ["PublishProtocol"] = "FileSystem", ["PublishDir"] = @"bin\Release\Test" }; var targetsToBuild = new[] { "Restore", "Rebuild", "Publish" }; var request = new BuildRequestData(path, properties, null, targetsToBuild, null); var parameters = new BuildParameters(new ProjectCollection()); BuildManager.DefaultBuildManager.ResetCaches(); var result = BuildManager.DefaultBuildManager.Build(parameters, request); 但是,我遇到以下异常: The SDK 'Microsoft.NET.Sdk' specified could not be found. 为什么 BuildManager 的行为与 msbuild 不同,有没有办法解决这个问题? 安装后您是否尝试验证您的网络 SDK 并检查了 envo?

回答 1 投票 0

设置 Azure DevOps 构建机器 - 无法解析 SDK“Microsoft.NET.SDK.WorkloadAutoImportPropsLocator”

我正在 Azure DevOps 中设置管道。我决定设立自己的代理人。当我最初尝试构建管道时,它说找不到 C:\Program Files\

回答 1 投票 0

使用 MSBuild 构建 ASP.NET Web 表单应用程序时出现错误 CS0433

我正在开发 ASP.NET Web 窗体应用程序 (.NET Framework 4.7.2),并尝试使用 MSBuild 构建解决方案。 msbuild Project.sln /p:Configuration=Release /p:Platform="Any CPU"

回答 2 投票 0

如何复制项目并将每个项目大写?

在 MSBuild 中,很容易复制属性并将值大写: 莎拉 $(名称.ToUpper()) 在 MSBuild 中,很容易复制属性并将值大写: <PropertyGroup> <Name>Sarah</Name> <UpperName>$(Name.ToUpper())</UpperName> </PropertyGroup> 如何复制项目类型名称的每个项目,将其大写,并创建新的项目类型UpperNames? <ItemGroup> <Names Include="Tim" /> <Names Include="Sam" /> </ItemGroup> 您可以将项目展平为属性,将其大写,然后创建新的项目类型: <Target Name="Target1"> <PropertyGroup> <FlatNames>@(Names)</FlatNames> <FlatNames>$([MSBuild]::Unescape($(FlatNames.ToUpper())))</FlatNames> </PropertyGroup> <ItemGroup> <UpperNames Include="$(FlatNames)" /> </ItemGroup> <Message Text="UpperNames %(UpperNames.Identity)" /> </Target>

回答 1 投票 0

宏 $(VCTargetsPath) 到底定义在哪里?

我们之前有过讨论。 https://social.msdn.microsoft.com/Forums/vstudio/en-US/e04e7791-c0c4-4598-b900-310878f5af45/how-can-i-locate-and-change-the-vctargetspath-variable?forum=微软构建 之后唷...

回答 2 投票 0

如何正确编写批处理文件以供发布在.NET编程过程中添加不同的预编译宏?

我有以下代码: #如果是电脑 var rootPath = Path.Combine("dist"); #别的 var rootPath = Path.Combine(@"/bin/bash"); #万一 我想在

回答 1 投票 0

.pubxml 中的 MsBuild DefineConstants 无法正常工作

我有 ASP.NET Core + Blazor 应用程序(默认模板)和 2 个项目。 当我创建 IIS 发布配置文件时:

回答 0 投票 0

MSBuild - 根据具体情况引入PackageReference

这个想法是,如果 BuildConfigurations 元数据中未指定活动/当前构建配置,则将引用的项目作为包拉取。否则它将被添加为 ProjectReference。在...

回答 1 投票 0

如何在您的家用电脑上成功构建从 GitHub 下载的 Microsoft.Dotnet.Wpf.sln 存储库?

我正在尝试构建一个从 GitHub 下载的 Microsoft.Dotnet.Wpf.sln。我按照说明中所述安装了 Visual Studio 2022 Preview。现在,当我打开 Microsoft.Dotnet.Wpf...

回答 1 投票 0

dotnet 发布配置文件忽略 pubxml 文件

我有以下通过 Visual Studio 2019 创建的 pubxml 文件: <

回答 4 投票 0

当<Compile>和<EmbeddedResource>之外的文件发生更改时,如何避免 Visual Studio 增量构建无法运行?

我有一个 VS2017 csharp 项目,.csproj 文件如下所示: 执行 我有一个 VS2017 csharp 项目,.csproj 文件如下所示: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> <MyItem Include="file.dat" /> </ItemGroup> <PropertyGroup> <PrepareResourcesDependsOn> $(PrepareResourcesDependsOn); MyCompileTarget </PrepareResourcesDependsOn> <CoreCompileDependsOn> $(CoreCompileDependsOn); MyCompileTarget </CoreCompileDependsOn> </PropertyGroup> <Target Name="MyCompileTarget" Inputs="@(MyItem)" Outputs="@(MyItem->'%(FileName).out')"> ... </Target> </Project> 其中 MyCompileTarget 是从 file.out 生成 file.dat 的目标(在实际代码中,增量构建目标和属性位于通过 NuGet 包自动包含的目标文件中)。 问题是,如果我更改 file.dat 并按 Build,则根本不会执行 目标(但 MyTarget 使用 Rebuild 或使用 msbuild 运行时可以正确执行)。我希望执行 MyCompileTarget 以便更新 file.out 文件。 如果我使用 BeforeBuild 或 AfterBuild 而不是 PrepareResourcesDependsOn 等,也会出现同样的问题 除非 @(Compile) 或 @(EmbeddedResource) 中的某些文件发生更改,否则 Visual Studio 增量构建似乎不会启动。事实上,如果我添加以下内容 <EmbeddedResource>file.dat</EmbeddedResource> 增量构建按预期工作(但显然我不想将 file.dat 嵌入到生成的程序集中)。 如果修改了file.dat,并且相应的生成文件早于file.dat或不存在,是否可以强制Visual Studio启用增量构建? 注意:使用 VS2015、.NET CORE 或 .NET FRAMEWORK 也会出现同样的问题。 另外,如果我更改 csharp 文件,将触发增量构建,因此它将触发 MyTask,但前提是 file.dat 比生成的文件更新(如预期)。 提前致谢, 法比奥。 如果 file.dat 被修改,是否可以强制 Visual Studio 启用增量构建 您可以在项目文件中将属性 DisableFastUpToDateCheck 设置为 true,以禁用 Visual Studio 构建管理器的 FastUpToDateCheck: <PropertyGroup> <DisableFastUpToDateCheck>True</DisableFastUpToDateCheck> </PropertyGroup> 检查MSDN有关DisableFastUpToDateCheck的信息: 仅适用于 Visual Studio 的布尔值。 视觉工作室 构建管理器使用名为 FastUpToDateCheck 的过程来确定 是否必须重建项目才能保持最新状态。 此过程是 比使用 MSBuild 更快地确定这一点。 设置 将 DisableFastUpToDateCheck 属性设置为 true 可让您绕过 Visual Studio 构建管理器并强制它使用 MSBuild 来确定是否 该项目是最新的 更新: 此外,我们还可以将 UpToDateCheckInput 设置为项目: <UpToDateCheckInput Include="file.dat" /> 禁用 VS 快速更新检查会让你的构建速度变慢。别这样做! 相反,请确保最新检查了解项目中的项目以及它们与构建的关系。为此,您可以将两种项目添加到您的项目中: UpToDateCheckInput 用于输入 UpToDateCheckBuilt 用于输出 在您的情况下,您需要第二个选项,因为既有输入又有输出。您需要确保如果删除输出,它会被重建。 <ItemGroup> <UpToDateCheckBuilt Original="@(MyItem)" Include="@(MyItem->'%(FileName).out')"> </ItemGroup> 有关更多信息,请参阅文档: https://github.com/dotnet/project-system/blob/main/docs/up-to-date-check.md

回答 2 投票 0

MSBuild 的现有构建目标是什么?

MSBuild 允许您使用 -target: 指定构建目标,例如 Build 或 Clean(示例:MSBuild.exe -target:Clean)。 当然,开发人员可以使用 .

回答 2 投票 0

我可以将编译常量传递给项目引用吗?

如果我有 引用,有什么方法可以将条件编译值传递给该项目吗?像这样的东西(我知道不存在这样的...

回答 4 投票 0

为什么 Visual Studio 不在输出窗口中显示项目/目标性能摘要?

如果我在 Visual Studio 2022 中构建一个简单的 .NET 8.0 HelloWorld 项目,我会在输出窗口中得到以下输出: 重建于 14:53 开始... 1>------ 重建全部开始:项目:HelloWor...

回答 1 投票 0

如何让 MSBuild 目标在输入文件更改时运行?

嗨,我对 MSBuild 还很陌生,所以任何反馈都非常有帮助。我正在尝试执行一个构建步骤来编译任何 *.less 文件以与 Blazor 一起使用。我以前使用过 WebCompiler 但它不...

回答 1 投票 0

在 Mac 上调试 .NET 8 iOS 应用程序(包括其扩展)的现代方法是什么?

本题有两个相关问题: 1. 在 Mac 上调试 .NET 8+ 应用程序的现代方法是什么? 出现这个问题的原因是: VS for Mac 即将退役(2024 年 5 月),即使现在它......

回答 1 投票 0

在 msbuild 条件下针对 .net5 或更高版本的所有 .Net 版本

构建具有多个目标框架 .Net 6.0 和 .Net Framework 4.7.2 (net6.0;net472) 应用程序的应用程序时,您可以指定条件...

回答 2 投票 0

如何从命令行传递 msbuild 条件?

我有一个目标作为我的构建的一部分,我希望在评估某些命令行检查时跳过它: ....

回答 2 投票 0

msbuild - 将资源文件添加到项目后静态库编译失败

我有一个C++库,它被编译为动态库和静态库。最近我将资源版本文件添加到源中。动态库编译工作正常,但静态库编译明星......

回答 2 投票 0

MSBuild 指定/未指定平台参数时的差异

我有一个 VS10 项目文件(.csproj)。我正在从命令行使用 MSBuild 构建这个项目。我有一个简单的问题,我长期以来一直试图弄清楚。有什么不同...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.