Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。
在开发模式下使用自定义 MSBuild 任务时的文件锁定问题
我正在按照 Microsoft 示例中概述的指导开发自定义 MSBuild 任务。开发工作流程不好,因为每当我更改任务并且想要测试它时,要做...
我正在尝试使用构建后构建事件在 .sln 上调用 msbuild 就像是: xcopy "$(TargetDir)$(TargetName)*" "C:\TEST\" /Y. 我可以只用一行来做吗?基本上我想拥有
我正在尝试创建一个仅包含 MSBuild *.targets 文件的 nuget 包。我可以创建一个 C# 类库并添加我的目标文件,但我不需要 C# 构建过程的开销。难道是……
如何在 .csproj 中定义引用 IntermediateOutputPath 的属性
我在.csproj中有这样的部分: 我在 .csproj 中有这样的部分: <Target Name="Date" BeforeTargets="BeforeBuild"> <WriteLinesToFile File="$(IntermediateOutputPath)BuildInfo.gen.cs" Lines="...."/> </Target> <ItemGroup> <Compile Include="$(IntermediateOutputPath)BuildInfo.gen.cs" Condition="Exists('$(IntermediateOutputPath)BuildInfo.gen.cs')"/> </ItemGroup> IntermediateOutputPath如期解决,一切都很好。但由于整个路径在我的 .csproj 中重复了 3 次,我想清理它并提出自定义变量: <PropertyGroup> <BuildInfoPath>$(IntermediateOutputPath)BuildInfo.gen.cs</BuildInfoPath> </PropertyGroup> <Target Name="Date" BeforeTargets="BeforeBuild"> <WriteLinesToFile File="$(BuildInfoPath)" Lines="...."/> </Target> <ItemGroup> <Compile Include="$(BuildInfoPath)" Condition="Exists('$(BuildInfoPath)')"/> </ItemGroup> 我的变量已解析,但其内容不完全正确 - 我的效果就像 IntermediateOutputPath 是一个空字符串。 那么我如何定义自己的变量引用IntermediateOutputPath? 我已经发现,如果我将变量定义包装在 Target 中,它将部分起作用 - 即上面所示的 Target 部分将获得正确的变量,但反过来对于 ItemGroup 我的变量会是空的。 MSBuild 有两个阶段:评估和执行。请参阅“MSBuild 如何构建项目”。 “顶层”的 ItemGroup 和 PropertyGroup 元素(即 Project 文档根元素的直接子元素)在评估阶段进行评估。 ItemGroup 中的 PropertyGroup 和 Target 元素在执行阶段进行评估。 我假设这是一个 SDK 风格的项目。在后台,根据 SDK 类型导入一组文件。有些文件是在 .csproj 项目文件内容之前导入的,有些文件是在 .csproj 项目文件内容之后导入的。 IntermediateOutputPath 属性是在评估阶段定义的,但在 .csproj 内容之后导入的文件中定义。 在评估阶段的项目文件内容中,该属性尚未定义,并且在定义之前使用该属性会产生一个空字符串 - 正如您所观察到的。 在 SDK 样式项目中,仅在目标中使用 IntermediateOutputPath 属性。 您仍然可以定义自己的属性和依赖于IntermediateOutputPath的项目,但您需要将定义包装在目标中,并确保在使用值之前执行定义,例如: <Target Name="DefineBuildInfoPath"> <PropertyGroup> <BuildInfoPath>$(IntermediateOutputPath)BuildInfo.gen.cs</BuildInfoPath> </PropertyGroup> </Target> <Target Name="Date" BeforeTargets="BeforeBuild" DependsOnTargets="DefineBuildInfoPath"> <WriteLinesToFile File="$(BuildInfoPath)" Lines="...."/> </Target> <Target Name="AddBuildInfoToCompile" BeforeTargets="BeforeCompile" DependsOnTargets="Date;DefineBuildInfoPath"> <ItemGroup> <Compile Include="$(BuildInfoPath)" Condition="Exists('$(BuildInfoPath)')"/> </ItemGroup> </Target>
我们自己的 bitbucket 存储库中有多个 .NET 项目 (.NETFramework 4.7.1)。我们喜欢实现持续集成,以便存储库中的每个检查都应该运行自动单元
我知道这个问题在这个网站上。但所有答案都与某些程序语句相关。 就我而言,没有。 我将 Visual Studio 更新到 Microsoft Visual Studio Community 2022(64 位)版本 1...
我的解决方案包含一些我们构建到的默认插件项目 .. 在\调试\插件\$(MSBuildProjectName) 这样做所有参考集最终都会...
Blazor Web 应用程序(.net 8 服务器) - Razor 组件库 RCL 作为 NuGet(本地源)w MainLayout 样式共享
找到答案后更新,供有问题的人将来参考 我想做什么: 在我的 web 应用程序上使用 MainLayout 来利用 RCL 的 razor 组件传入导航菜单并使用 ...
Microsoft.Data.SqlClient 5.1.2 抛出 NullReference 异常,堆栈跟踪指向引用程序集
我的云服务辅助角色 (.NET 4.8) 引用 NuGet 包 Microsoft.Data.SqlClient 版本 5.1.2。 该代码在本地运行良好。 Microsoft DevOps 管道构建并发布云服务...
nuget add 在 msbuild exec 命令中不起作用
我正在尝试在 VS2022 中自动化流程 Build -> Pack -> Add for nuget package。我已经创建了 SDK 类型项目并使用默认设置来创建 nuget 包。执行 Pack Comm 后...
需要一些帮助 - Blazor Web 应用程序(.net 8 服务器) - Razor 组件库 RCL 作为 NuGet(本地源)w MainLayout 样式共享
我正在尝试做的事情: 在我的 web 应用程序上使用 MainLayout 来利用 RCL 的 razor 组件传入导航菜单并使用共享库样式等。 我有一个 RCL,其中包含 2 个剃须刀组件...
MSBuild:CopyToOutputDirectory 不会将本机 DLL 复制到输出
我有一个包含 2 个项目的解决方案:MSBuildQuestion.csproj 和 NativeLibrary.vcxproj。 MSBuildQuestion.csproj 生成 MSBuildQuestion.exe。 NativeLibrary.vcxproj 生成 NativeLibrary.dll。 MSBuildQu...
我想使用 Windows 桌面(例如运行 Windows 10 或 11)作为构建服务器。我应该禁用哪些服务以及应该安装哪些功能来准备计算机进行编译
我需要编写一个简单的方法,该方法将在编译时调用,如果不满足某些条件,该方法将生成构建错误。 是否可以通过某些特定属性来做到这一点?
我有一个多平台 MAUI 解决方案,其中包含多个项目。其中一个项目引用需要随平台而更改,因此我将其从 .sln 文件(GUI 放置的位置)移至...
为什么即使设置了包源映射,我也会收到中央包管理警告 NU1507?
我正在尝试 NuGet 中新的中央包管理功能。 如文档中所述,如果您使用多个 NuGet 源(我使用的),现在需要配置包源
我们有 ASP.NET Web 项目,我们正在将其迁移到具有集中式 nuget 包管理的 .NET SDK 样式项目。 我们使用的模板是 我们有 asp.net Web 项目,我们正在将其迁移到具有集中式 nuget 包管理的 .NET SDK 样式项目。 我们使用的模板是<Project Sdk="MSBuild.SDK.SystemWeb/4.0.88">,我们有一个包含三个转换(调试、发布、测试)的 Web.Config 文件。构建操作设置为内容,复制到输出目录设置为无。 VS 构建工作得很好,但是当我们尝试发布构建时,我们收到以下消息: PreTransformWebConfig: Found The following for Config tranformation: Web.config, Web.config Skip copying Web.config to ...\Release\TransformWebConfig\original\W eb.config, File ...\Release\TransformWebConfig\original\Web.config i s up to date 构建失败: Transforming Source File: ...\Web.config;Web.config C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VisualStudio\v17.0\Web\Microsoft.Web.Publi shing.targets(1552,5): error : Could not open Source file: Could not find file '...\Web.config;Web.config'. [...Web.API.csproj] 构建命令: msbuild /p:configuration=release /p:DeployOnBuild=true /p:DebugType=None /p:SkipInvalidConfigurations=true /p:WarningLevel=0 如何解决这个问题?这是一个.net框架项目,能够转换web.config对我们来说非常重要。 当项目迁移到 SDK 样式,同时保留显式内容项时,就会发生这种情况。 修复:添加 <EnableWebFormsDefaultItems>false</EnableWebFormsDefaultItems> 或删除显式项目。 原答案复制自: https://github.com/CZEMacLeod/MSBuild.SDK.SystemWeb/issues/60 最后我们对 CSPROJ 文件本身有些混乱......对我们有用的是: <ItemGroup> <None Include="Web.Debug.config"> <IsTransformFile>true</IsTransformFile> <DependentUpon>Web.config</DependentUpon> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </None> <None Include="Web.Release.config"> <IsTransformFile>true</IsTransformFile> <DependentUpon>Web.config</DependentUpon> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </None> <None Include="Web.Test.config"> <IsTransformFile>true</IsTransformFile> <DependentUpon>Web.config</DependentUpon> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </None> </ItemGroup> ..... <ItemGroup> <Content Update="Web.config"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> <TransformOnBuild>true</TransformOnBuild> </Content> <Content Update="Web.Debug.config"> <IsTransformFile>true</IsTransformFile> <DependentUpon>Web.config</DependentUpon> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content> <Content Update="Web.Release.config"> <IsTransformFile>true</IsTransformFile> <DependentUpon>Web.config</DependentUpon> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content> </ItemGroup>
AzureDevOps Build 失败,无法到达 Microsoft.WebSite.Publishing.targets。未知 VStoolspath
我的项目无法构建,因为它无法到达 Azure DevOps 上的 Microsoft.Web.Publishing.targets 我们在 Prem 上的 VStoolsPath 是“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio 12.0”并带有“\...
使用 (XALM) 构建过程模板在 TFS 2013 中将工具路径设置为 MSBuild 2019
TL;DR:清理 Windows 构建服务器,安装 MS Build Tools 2019 和 TFS 2013。 构建日志显示异常消息:找不到文件:MSBuild.exe(类型 FileNotFoundException) 我该如何设置 MSBUILD...
尝试使用 ProjectReference 将应用程序发布为独立的,以便在 WiX v4 项目中使用
我正在尝试使用 WiX v4 创建安装,它将发布另一个 C# 项目,收获其文件,然后将其打包到安装程序中。我能够让它工作,但问题是......