Microsoft Build Engine,也称为MSBuild,是托管代码的构建平台,是.NET Framework的一部分。
Azure Devops 可以使用 .NET Framework 引用构建 ASP.NET Core 8 Web API 吗?
我有一个 ASP.NET Core 8 Web API,正在通过 Azure Devops 构建/部署。该 API 托管在服务器上的 IIS 中,因此我使用 DotNetCoreCLI@2 任务来执行 dotnet 发布...
以前使用 Nuget,可以运行 nuget pack -OutputDirectory ../../output 例如。我该如何使用 msbuild pack 来做到这一点?我用的是VS2017。
嗯,问题是我没有安装 Visual Studio 并且我不想安装它,所以,我制作了一个批处理文件来编译我的 .csproj 文件和所有源文件。 问题是...
跳过项目“SetupWix.wixproj”的恢复。项目文件可能无效或缺少恢复所需的目标 (NU1503)
我们使用 Wixtoolset V3.9 来构建我们的设置。我们使用以下命令来开始构建: “C:\Program Files (x86)\Microsoft Visual Studio�9\Enterprise\MSBuild\Current\Bin\msbuild.exe”/re...
我正在尝试对 .Net Framework v4.5.2 和 .net standard2.0 进行多目标定位,我的项目文件具有以下定位选项属性: v4.5.2 我正在尝试对 .Net Framework v4.5.2 和 .net standard2.0 进行多目标定位,我的项目文件具有以下定位选项属性: <TargetFramework>v4.5.2</TargetFramework> <TargetFrameworks>v4.5.2;netstandard2.0</TargetFrameworks> 我没有看到我的项目中有任何引用框架 4.0 的地方,但我仍然得到: [...]\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2203,5): warning MSB3274: The primary reference "RestSharp, Version=105.2.3.0, Culture=neutral, processorArchitecture=MSIL" could not be resolved because it was built against the ".NETFramework,Version=v4.5.2" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". 后面是很多CS0234(未找到RestSharp内的类型或命名空间) obj 文件夹包含一个名为“.NETFramework,Version=v4.0.AssemblyAttributes”的文件,因此出于某种原因 VS 认为我想以 4.0 为目标。 obj 文件夹还包含两个文件夹 netstandard2.0 和 v4.5.2 这让我很困惑,因为这里 MSBuild 似乎得到了我想要的东西。 我尝试清理解决方案并手动删除 obj 和 bin 文件夹。没有任何成功。 您知道这可能是从哪里产生的或者如何进一步调试吗?谢谢! 编辑: 刚刚在 VS2019 中打开解决方案时看到我得到: 恢复输入无效。发现重复的框架:“net40,net40”。输入文件:[myproject.csproj] 但是使用 myproject.csproj greping net40 没有匹配项。 当构建版本的版本号高于 Visual Studio 版本预安装的版本时,通常会发生该错误。 请尝试编辑项目文件以忽略目标框架版本不匹配,如下所示,看看它是否可以解锁您。 <PropertyGroup> <ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>true</ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch> </PropertyGroup>
从命令提示符使用 MSBuild 和 C# 编译器有什么区别?我想在不使用 Visual Studio 的情况下手动构建我的解决方案/项目,并且我想学习如何使用
我正在运行我的 Azure 管道来构建 .net 解决方案并创建用于部署的工件。我在构建解决方案步骤之前包含了 NuGet 恢复步骤,但我得到了多个
我正在 VS2015 中开发一个 Angular2 应用程序,并为其设置了一个 webpack 捆绑和缩小环境。 这是我的 webpack.conf.js 开关(process.env.NODE_ENV){ ...
在 Visual Studio 2013 中写入输出构建窗格 + 错误列表,无需使用 msbuild/new 进程即可双击条目转到错误
我正在使用一个自定义构建工具,我从我正在创建的 Visual Studio 2013 扩展包中将其称为 dll,我想获取从此工具返回的字符串输出,解析它......
msbuild 参考程序集在 Visual Studio 中使用多个 .csproj 构建解决方案时解析顺序
我有一个包含多个项目的解决方案,这些项目安装了版本不同的nuget包。看看重建解决方案时,复制到输出目录的 dll 版本...
如何在构建上运行 TextTemplatedFileGenerator (VS 2017)
我发现之前有人问过这个问题,但我遇到的所有答案都特定于早期版本的 Visual Studio。似乎主要是VS2015及更早版本。 大多数
从 Visual Studio 运行时,MSBuild 会被赋予 $(SolutionDir) 宏/属性。 从 Azure DevOps 运行时,此属性不存在(理所当然)。 Azure DevOps 有 Build.SourceBranch
MSBuild“GenerateFakes”错误 MSB4127、MSB4060
使用 Visual Studio 2013 构建时,GenerateFakes 成功,它使用相同目标文件的相同路径。 当通过 MSBuild 12.0(与 Visual Studio 2013 附带的版本相同)构建时,我...
一个 .targets 文件,它将在每个发布版本上增加版本号
原始问题 我有一个 Directory.Build.targets 文件,在使用发布配置构建时会增加项目版本的内部版本号。即产品版本为1.0.0.0,当...
MSB4067 元素 <WriteLinesToFile> 下面的元素 <Target> 无法识别
我有一个 Directory.Build.targets 文件,在使用发布配置构建时会增加项目版本的构建号。即,产品版本为 1.0.0.0,在 Release 中构建时...
源生成器获取引用项目路径 - 从 IncrementalValueProvider 检索有用的值<string>
我正在发现源生成器的概念。 为了根据目标/
自定义 MSBuild 任务 .NET 6.0 使用 dotnet 运行,但不在 VS 中运行
我有一个简单的项目,其中有一个自定义 MSBuild 任务。 此任务将使用 dotnet msbuild 运行,但在 VS2022 中失败。 除了有关架构的一些问题之外,我在网上没有找到任何内容
到目前为止我尝试过的: 我有以下 .nuspec 文件,定义了我的包(为了更好的可读性而进行了简化): 到目前为止我尝试过的: 我有以下 .nuspec 文件,定义了我的包(为了更好的可读性而进行了简化): <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> . . . <dependencies/> <contentFiles> <files include="any\any\config\*.*" buildAction="None" copyToOutput="true" flatten="false"/> </contentFiles> </metadata> <files> <file src="bin\Assembly.dll" target="lib\net461" /> <file src="bin\Assembly.pdb" target="lib\net461" /> <file src="Config\cf.xml" target="contentFiles\any\any\config"/> <file src="Config\cf.txt" target="contentFiles\any\any\config"/> </files> </package> 如您所见,它包含一个已编译的程序集及其调试符号文件以及子目录中的两个内容文件。 这会产生以下编译输出,其中 Assembly.dll 被提取到输出目录以及 config 子目录(其中包含两个 cf.* 文件): 问题: 我想要做的是将子目录 config 在目录树中向上移动一步,因此它位于输出目录的 next - 基本上维护 .nuspec 文件中文件输入的结构(假设 bin 是我的 .csproj 的输出目录): 如何告诉 NuGet 包我想要将 contentFiles 提取到的确切位置? 您可以通过创建一个 MSBuild 目标来实现此目的,该目标将您的 config 文件夹移动到项目构建输出之上一级。 将包含以下内容的 .targets 文件添加到 NuGet 的 build\net461 文件夹中: <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- Sets up items for target MoveConfigFiles, so that they can be used as Inputs and Outputs. --> <Target Name="PrepareMoveConfigFiles" AfterTargets="Build"> <!-- ItemGroup wrapped in Target to delay evaluation of contained Items --> <ItemGroup> <!-- Contains source locations of files to be moved --> <ConfigSourceFiles Include="$(OutputPath)\config\**\*.*" /> <!-- Contains target locations of files to be moved --> <ConfigTargetFiles Include="@(ConfigSourceFiles->'%(FullPath)'->Replace('\config\', '\..\config\'))" /> </ItemGroup> </Target> <!-- Moves files from $(OutputPath)\config to $(OutputPath)\..\config, then deletes $(OutputPath)\config. --> <Target Name="MoveConfigFiles" AfterTargets="PrepareMoveConfigFiles" Inputs="@(ConfigSourceFiles)" Outputs="@(ConfigTargetFiles)"> <Move SourceFiles="@(ConfigSourceFiles)" DestinationFiles="@(ConfigTargetFiles)" /> <RemoveDir Directories="$(OutputPath)\config" /> </Target> </Project> 目标 PrepareMoveConfigFiles 在 Build 目标之后执行(这保证 NuGet 的内容存在于构建输出中),并设置用作下一个 Inputs 目标的 Outputs 和 MoveConfigFiles 的项目。 (这些项目设置在此目标内,以确保在 Build 目标完成后对它们进行评估。如果将项目定义放置在 Project 级别以下,则它们将更早进行评估,因此可能为空,因为文件content 文件夹尚未部署。) ConfigSourceFiles项仅包含源文件,ConfigTargetFiles采用所有ConfigSourceFiles的路径,并将\config\替换为\..\config\,从而到达所需的目标位置。 MoveConfigFiles目标然后使用Move和RemoveDir任务来完成文件的移动和原始config文件夹的删除。 这是一个奇怪的问题... 您需要对 nuspec 文件执行多项操作; 主要是“nuget 包”。 您的 nuspec 行: <file src="bin\Assembly.dll" target="lib\net461" /> <file src="bin\Assembly.pdb" target="lib\net461" /> 我不明白Assembly.pdb如何分发它,但这并不重要。 这行代码的目标是在您的项目中分发 dll。 当您编译解决方案时(在解决方案目录中),它会在同一根应用程序目录中搜索此 dll,或者检查是否在系统上注册(主要是 gac)。 另一方面,其他类型的行是 nuget 中的“内容” <file src="Config\cf.xml" target="contentFiles\any\any\config"/> <file src="Config\cf.txt" target="contentFiles\any\any\config"/> 这是额外的内容,但可能不会在项目中使用。 如果您想要一个路由系统,您可以使用内容,但使用 dll 可能会遇到问题。 所以,我想也许你会这样: <file src="bin\Assembly.dll" target="contentFiles\any\any\bin" /> <file src="bin\Assembly.pdb" target="contentFiles\any\any\bin" /> <file src="Config\cf.xml" target="contentFiles\any\any\config"/> <file src="Config\cf.txt" target="contentFiles\any\any\config"/> 以及其他 nuspec 示例(我不会这样做,但是,可以这样做): <files> <file src="content\bin\youtBinayFile" target="content\bin\youtBinayFile" /> <file src="content\Config\YourConfigFile" target="content\Config\YourConfigFile" /> <file src="readme.txt" target="readme.txt" /> </files> 希望对你有帮助
所以我通过命令行使用 MSBuild,但在自定义 .vcxproj 文件时我有几个问题: 如何使用自定义输出而不是默认输出(x64/Debug 和 x64/Release,但我想要 bin/releases...
如何将ProjectPropertyGroupElement的条件评估为bool?
我正在使用 MSBuild API。 我有一个 ProjectRootElement 实例: var project = ProjectRootElement.Create(XmlReader.Create(new StringReader(input))); 然后,我迭代所有 PropertyGroup: 前...