Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。
“msbuild”不被识别为内部或外部命令、可运行程序或批处理文件。错误
Visual Studio 2019、Windows 11。IBM Blockchain Platform 教程,A5:从外部应用程序调用智能合约,步骤 A5.26:在 VS Code 主菜单中,单击“终端”->“运行构建...”
我有一个带有 props 文件的 nuget 包,在 props 文件中我有以下命令: 我有一个带有 props 文件的 nuget 包,在 props 文件中我有以下命令: <Target Name="_myRunCommands" BeforeTargets="Rebuild;Build"> <Message Text="$(MyMessagePrefix) Tools install started" Importance="high" /> <!-- restore will install / restore the packages if missing, but not update them --> <Exec Command="dotnet tool restore" StandardOutputImportance="High" StandardErrorImportance="High" /> <Exec Command="dotnet tool update husky" StandardOutputImportance="High" StandardErrorImportance="High" /> <Exec Command="dotnet tool update csharpier" StandardOutputImportance="High" StandardErrorImportance="High" /> <Exec Command="dotnet husky install" WorkingDirectory="$(MySolutionDir)" /> </Target> 但是,我希望这些命令仅在打开或更改解决方案时运行一次。 并非每次都运行构建,或者同一解决方案多次运行。 问题:有没有办法在打开解决方案时运行这些命令仅一次?我查看了所有目标,但找不到任何有用的东西。有人有解决办法吗? 首先请注意,MSBuild 用于指定构建步骤。打开文件时运行目标(通过 Visual Studio?VSCode?Rider?记事本?)在 MSBuild 之外。但我建议你的目标作为构建步骤就可以了。 另请注意,解决方案可以构建项目,但按设计的项目有关解决方案的信息极其有限。更重要的是,您无法从项目内部将目标注入到解决方案的项目构建中。 项目可能会对您的包有 ProjectReference。该 ProjectReference 特定于该项目。包中的 .props 文件将被导入到项目中,并且 _myRunCommands 目标将被运行。每个引用该包的项目都将运行 _myRunCommands 目标。这对于共享/重用自定义目标非常有用,但根本不是您正在寻找的行为。 定制解决方案 有一种机制可以定制解决方案。 对于 MySolution.sln,如果存在名为 before.MySolution.sln.targets 和/或 after.MySolution.sln.targets 的文件,它们将由解决方案自动导入并使用。但是,这只适用于命令行构建。从 Visual Studio 构建时,这些文件将被忽略。 (命令行构建和 Visual Studio 构建之间的差异很糟糕,但那是一个完全不同的主题。) 公用事业项目 如果您需要 cli 和 VStudio 构建之间的平衡,另一种方法是创建一个实用程序项目。在给定的解决方案构建中,实用程序项目与任何项目一样,将构建一次。 您可以将 Microsoft.Build.NoTargets Project SDK 用于实用程序项目。 确保实用程序项目成为需要首先构建实用程序项目的项目的依赖项。可以在解决方案文件中设置依赖关系。在 Visual Studio 的解决方案资源管理器中,您可以右键单击解决方案并选择“项目依赖项”。 解决方案更改时运行 要限制实用程序项目的_myRunCommands目标在每个解决方案构建上进行构建,您可以指定输入和输出。 作为 _myRunCommands 目标的一部分,使用 Touch 任务 创建文件或更新时间戳(如果文件存在)。您可以随意命名该文件,例如lastrun.txt。该文件是您的“输出”。您的 .sln 文件是您的“输入”。如果 .sln 文件已更改并且具有较新的时间戳,则 lastrun.txt 将运行目标以更新 lastrun.txt 文件。否则目标将无法运行。
我在这里阅读了许多问题(和答案),其中的术语与这个问题听起来相似,但所有这些问题最终都是针对不同主要版本的.Net 进行构建...
我有一个包含 net 9 中多个项目的解决方案(猜测 .net 6-8 也是如此,所以并不重要)。 我有具有多目标构建的项目/程序集 A:net9;net9.0-windows Windows v...
我有一个包含 net 9 中多个项目的解决方案(猜测 .net 6-8 也是如此,所以并不重要)。 我有具有多目标构建的项目/程序集 A:net9;net9.0-windows Windows v...
这是我要解决的问题: 我有一些使用 生成的 *.proto 文件 这是我要解决的问题: 我正在使用 *.proto 中的 <ProtoBuf MSBuild 任务生成一些 Grpc.Tools 文件。 据我所知,这既不支持生成可为空的引用代码,也不支持仅将 #nullable disable 放在文件顶部。 但是我想将它们包含在其中的项目已启用Nullable。 这将生成一堆类,其中编译器会将引用视为不可为空,而实际上它们可以为空。所以我正在尝试想出处理这个问题的方法。只是让事情变得复杂的是,这是一个可以在许多项目中复制的原型,所以我正在寻找尽可能简单的解决方案。 单独的项目并不是特别理想,因此我正在尝试寻找可以将目标目录标记为不启用可为空的方法。那么,有没有办法为文件夹设置指令? 如果您使用 .editorconfig 忽略生成的警告,则可以忽略每个文件夹的问题。 您可以将文件放入相关文件夹中,也可以将父文件夹中选择器中的文件夹与 .editorconfig 文件一起使用。 [API/**/*.cs] # Ignore CS8669: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. # because the API project uses nullable reference types, but is copied to a context where we don't use them. dotnet_diagnostic.CS8669.severity = none
我已经创建了已发布到文件夹的库。它有几个依赖库,因此文件夹中有很多文件,都是需要的。 如果我只在新项目中引用库-dll...
我已经创建了已发布到文件夹的库。它有几个依赖库,因此文件夹中有很多文件,都是需要的。 如果我只在新项目中引用库-dll...
我尝试了很多资源,但还没有真正看到在 Windows 中构建 icu 数据 dll 的正确命令或方法。 所以我尝试过- msbuild 源 llinone llinone.sln /p:Configuration=Relea...
我有一个 Delphi 11.2 项目,可以在 Delphi 中正常构建,但在命令行上失败。 简而言之,通过 IDE 进行构建似乎使用了与构建时不同版本的 MSBuild...
Visual Studio C# 项目中的自定义生成操作属性
在 Visual Studio C++ 项目中,我可以定义自定义构建操作和相应的属性规则(请参阅 MSBuild 文件夹下的 cl.xml)。如何在 C# 中为自定义构建操作创建这样的规则
是否可以在没有 Visual Studio 的情况下使用 MSVC 进行编译?
在我的工作中,我们尝试使用独立的存储库,这意味着我们的存储库当然包含源代码,但也包含依赖项和构建工具链。我所说的构建工具链是指所有...
数据层应用程序中的 MSBuild 和 sqlcmd 变量 PostDeployment.sql
前言 我使用数据层应用程序项目和 SQL CLR 数据库项目来管理应用程序的数据库部分。 我有 3 台不同的机器(用于本地、dev/ci/qa 和 preprod/prod 部署
如何有条件地应用“csproj”文件中的“<HintPath>”元素?
所以我最近发现,当使用带有 /p:RestorePackagesPath 标志的 msbuild 时,每个 csproj 文件内的 标签似乎优先。见这里。 基本上,执行时...
我有一个 VS 2012 解决方案,其中包含两个项目(WCF C# 服务应用程序和 VB Web UI),我试图通过 TeamCity/MsBuild 命令行进行部署。 每个项目都包含一个发布配置文件 - 让我们
尝试使用同一 DLL 的两个不同版本时出现警告 MSB3243
由于第 3 方库的更改,我尝试使用同一 DLL 的两个不同版本。有很多参考文献可以做到这一点,例如这个,但它们的描述略有不同
MSBuild 的 RestorePackagesPath 参数的用途到底是什么?
在我的构建管道中,我运行以下命令: “C:\Program Files\Microsoft Visual Studio�2\Community\MSBuild\Current\Bin\MSBuild.exe” “C:\ProgramData\SampleProject\SampleProje...
MSBuild,VS2022 错误,带有空“ ef\" 文件夹:错误 CS0006
我正在将项目从.net6转换为.net8,当我切换回.net6版本时,我无法再构建,因为它在空文件夹中寻找生成的dll' ef'虽然有些东西...
如何让 Visual Studio 监视我的 Typescript 文件的更改?
我正在开发一个遗留的、相当过时的 MVC 项目,我的任务是添加几个主要的新功能。虽然大部分 UI 都在 Razor 中,但其中一个功能将涉及相当多的内容......
据我所知,VS2008/MSBuild不支持C#项目的多线程编译。不知道VS2010是否支持。您知道有这样做的第三方产品或开源项目吗?