Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。
有没有办法在 C# 中指定“可选”MSBuild 全局 using 指令 (<Using />)?
我的项目具有以下 属性: 现在...
假设我当前位于目录 C:\Eccentric-Stuff 文件夹下,那么如果我回显 %CD%,则输出就是该文件夹,即右侧部分。然而,当我构建解决方案时,在文件夹下面...
有没有办法自动增加 ClickOnce 部署中的“最低所需版本”字段以始终等于当前版本号?基本上,我总是希望我的部署是
构建delphi项目时出现错误Target clean does not believe in the project msbuild错误
我们正在VNext构建中使用msbuild任务构建delphi项目,它们一直成功运行,直到TFS构建代理更新到最新版本2.112.0,以下是错误混乱...
想象一下有一个数学库,它提供了一些针对 IEEE754 数字类型优化的功能。该代码可能包含以下内容: #如果F16 全局使用标量 = 系统...
我有一个 dotnet 核心项目,并尝试使用 dotnetpublish -c "Release" -p:Version=x.x.x.x 命令从命令行构建。 我还测试了标准的以下变体...
(MSBuild / Visual Studio 2022 C++ / 属性表)防止从 IDE 显示和/或修改 CopyFile 项
我创建了这个属性表,效果很好: 我创建了这个属性表,效果很好: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(OutDir)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 当我将此属性表添加到项目中时,Visual Studio IDE 在解决方案资源管理器中显示一个新项目“somefile.bin”,其属性可以编辑,并且此版本修改属性表文件本身。 有没有办法在属性表中编写相同的行为来阻止 IDE 显示该项目或禁止其版本? - 注意我的问题是我在多项目团队环境中工作,我想防止我的同事无意中修改共享属性表文件,认为使用 IDE 进行编辑只会影响他们自己的项目文件。 我尝试了以下选项但没有成功: 1.使用以下命令将属性表设置为“只读”: <PropertyGroup> <ReadOnlyProject>true</ReadOnlyProject> </PropertyGroup> 但它适用于整个项目,而不仅仅是属性表文件。 2.使用目标: <Target Name="MyTarget" BeforeTargets="Build" Outputs="$(OutDir)somefile.bin"> <Message Importance="high" Text="MyTarget: copy/update files '$(MSBuildThisFileDirectory)somefile.bin' to '$(OutDir)'" /> <Copy SourceFiles="$(MSBuildThisFileDirectory)somefile.bin" DestinationFolder="$(OutDir)"/> </Target> 但它不执行文件版本检查,即如果我修改源文件或删除输出文件,不一定会触发“MyTarget”,项目可以保持“最新”状态并且输出文件不会更新。 如果您想防止同事无意中修改共享属性表文件,您可以将.vcxproj文件的属性设置为Read-only。 右键单击文件->属性->常规->属性。 如果您使用 Git 等源代码管理,您可以创建一个 .gitignore 文件及其以下内容 # Ignore project file projectname.vcxproj 当您的同事修改项目文件并提交到源代码管理时,.gitignore 有助于防止该文件被 Git 跟踪。换句话说,对该文件的所有更改都不会提交,仅存储在本地。这确保了该文件只能在您这边修改。
也像这个答案中发布的那样:当我在 Visual Studio 中构建解决方案时,msbuild 用于打印构建项目的原因。这看起来像: “ABase”项目不是最新的。缺少输入文件‘c:\
每当我运行 docker build 时,我都会得到: “msbuild”不被识别为内部或外部命令, 可运行的程序或批处理文件。 和 “nuget.exe”未被识别为内部或
将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: 将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(OutDir)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 但是下面这个不起作用: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <CustomDestination>$(OutDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 这是有道理的,因为“CustomDestination”属性是在 VS IDE 中明确定义“OutDir”之前评估的,而“CopyFileToFolder”->“DestinationFolders”项元数据是在所有属性之后评估的。 是否有一种优雅的方法可以在“CopyFileToFolders”项目之前使用任何值(包括一些 $(X))预定义“CustomDestination”,以便我可以将两者移动到单独的属性表上? _ 补充说明: 我提出了以下解决方法,包括像这样单独管理 $(OutDir) : <PropertyGroup> <CustomDestination>$(ProjectDir);$(SolutionDir)SomeDirectory</CustomDestination> <UseOutDir>Yes</UseOutDir> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders Condition="'$(UseOutDir)' == ''">$(CustomDestination) </DestinationFolders> <DestinationFolders Condition="'$(UseOutDir)' != ''">$(OutDir);$(CustomDestination) </DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我想知道是否有人会提出更通用的解决方案。 我也尝试过这样的事情: <PropertyGroup> <CustomDestination>%24(OutDir);%24(ProjectDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我不知道如何让 VS/MSBuild 将 $(X) 内容替换为 $(CustomDestination) 属性值。 从属性表来看,您似乎想将 somefile.bin 复制到您的自定义路径。我将您的属性表(您说该属性表不起作用)复制到我本地的 c++ 项目进行测试,并且工作正常。它可以识别PropertyGroup中定义的$(CustomDestination)。 这是我的测试结果: 环境:Visual Studio 2022(17.10.4) 但是下面这个不起作用 您的意思是任务CopyFileToFolders无法将somefile.bin文件复制到您的自定义目标还是无法评估$(CustomDestination)?您在构建过程中能看到警告/错误消息吗? 如果您想确定“CustomDestination”属性是否在“CopyFileToFolders”项之前被评估,您可以直接打印它们的值。 <Target Name="test"> <Message Text="'%(CopyFileToFolders.FileType)'" /> <Message Text="'%(CopyFileToFolders.DestinationFolders)'" /> </Target>
(MSBuild / Visual Studio C++ 属性表)在属性表的属性组中使用 $(OutDir)
将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: 将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(OutDir)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 但是下面这个不起作用: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <CustomDestination>$(OutDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 这是有道理的,因为“CustomDestination”属性是在 VS IDE 中明确定义“OutDir”之前评估的,而“CopyFileToFolder”->“DestinationFolders”项元数据是在所有属性之后评估的。 是否有一种优雅的方法可以在“CopyFileToFolders”项目之前使用任何值(包括一些 $(X))预定义“CustomDestination”,以便我可以将两者移动到单独的属性表上? _ 补充说明: 我提出了以下解决方法,包括像这样单独管理 $(OutDir) : <PropertyGroup> <CustomDestination>$(ProjectDir);$(SolutionDir)SomeDirectory</CustomDestination> <UseOutDir>Yes</UseOutDir> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders Condition="'$(UseOutDir)' == ''">$(CustomDestination) </DestinationFolders> <DestinationFolders Condition="'$(UseOutDir)' != ''">$(OutDir);$(CustomDestination) </DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我想知道是否有人会提出更通用的解决方案。 我也尝试过这样的事情: <PropertyGroup> <CustomDestination>%24(OutDir);%24(ProjectDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我不知道如何让 VS/MSBuild 将 $(X) 内容替换为 $(CustomDestination) 属性值。 从属性表来看,您似乎想将 somefile.bin 复制到您的自定义路径。我将您的属性表(您说该属性表不起作用)复制到我本地的 c++ 项目进行测试,并且工作正常。它可以识别PropertyGroup中定义的$(CustomDestination)。 这是我的测试结果: 环境:Visual Studio 2022(17.10.4) 但是下面这个不起作用 您的意思是任务CopyFileToFolders无法将somefile.bin文件复制到您的自定义目标还是无法评估$(CustomDestination)?您在构建过程中能看到警告/错误消息吗? 如果您想确定“CustomDestination”属性是否在“CopyFileToFolders”项之前被评估,您可以直接打印它们的值。 <Target Name="test"> <Message Text="'%(CopyFileToFolders.FileType)'" /> <Message Text="'%(CopyFileToFolders.DestinationFolders)'" /> </Target>
MSBuild 检测签名的驱动程序是否与之前构建的未签名的驱动程序相同(防止通过缓存重新签名)
我的组织有一个驱动程序,现在需要由我们的组织和 Microsoft 双方签名。 我们有一个在 Windows 上作为批处理文件运行的构建过程,它为所有 bina 运行 msbuild...
使用GeneratePathProperty将另一个包中的程序集包含到我的NuGet包中
我正在构建一个依赖于另一个 NuGet 包的工具包。由于它不是常用的库,因此它必须将所有依赖项包含到 tools\ 目录中。我有以下 csproj (只有
如何在 Visual Studio 中构建期间对 JSON 文件应用转换?
我有一个项目 A(.NET Core),它被项目 B 引用。在项目 A 中,我有一个 JSON 文件需要在编译时更新(以替换某些值),我想要 JSON文件我...
使用“dotnet pack”和“GeneratePackageOnBuild”之间的区别?
我知道使用 dotnet pack 旨在创建 NuGet 包,而 dotnetpublish 旨在创建可部署的 DLL/EXE。但是,使用......中的GeneratePackageOnBuild属性
msbuild 错误:AssemblyRef 不包含“配置”的定义
我正在将视觉工作室构建“迁移”到批处理脚本, 我有一个大项目,有很多依赖项, 我使用 Windows 批处理脚本通过 msbuild.exe 构建我的项目, 主要项目(客户...
msbuild 错误:AssemblyRef 不包含“配置”的定义
我正在将视觉工作室构建“迁移”到批处理脚本, 我有一个大项目,有很多依赖项, 我使用 Windows 批处理脚本通过 msbuild.exe 构建我的项目, 主要项目(客户...
Visual Studio 自动从自定义 MSBuild 任务中删除新文件
我对这个自定义 MSBuild 目标是否做错了什么,导致 Visual Studio 出现此行为? 我有一个自定义 MSBuild 任务,它将单独的 javascript 文件捆绑到一个文件中...
如何在多个相互引用的 C# 项目脚本之间共享动态状态? 我在 project.targets 文件中创建了一个目标并将其导入到每个项目中。这个目标生成...
是否可以在没有 Visual Studio 的情况下安装 C# 编译器?
我想从命令行构建项目。是否可以在不安装 Visual Studio 的情况下部署 C# 编译器?