使用 nuget restore 命令还原项目的 NuGet 包的时候,NuGet 会尝试自动检测计算机上已经安装的 MSBuild。...会找到 PATH 中第一个包含 msbuild.exe 文件的路径,将其作为自动查找到的 MSBuild 的路径。...所以,我们的解决方法是,如果找错了,我们就把期望正确的 MSBuild 所在的路径设置到不期望的 MSBuild 路径的前面。...以下是 NuGet 项目中自动查找 MSBuild.exe 文件的方法,源代码来自 https://github.com/NuGet/NuGet.Client/blob/2b45154b8568d6cbf1469f414938f0e3e88e3704...MSBuild.exe,然后将此路径设置到环境变量 PATH 的前面,出现了编译错误。
--include-source:该选项用于创建带有 src 文件夹的符号包,该文件夹包含源文件。 将被打包项目的 NuGet 依赖项添加到 .nuspec 文件,以便在安装包时可以进行正确解析。...设置 GeneratePackageOnBuild 以避免生成目标和包目标之间的循环依赖关系时可能会发生这种情况。 如果存在锁定文件或其他问题,生成也可能失败。...可向 dotnet pack 命令提供 MSBuild 属性,用于打包进程。 有关详细信息,请参阅 NuGet 包目标属性和 MSBuild 命令行引用。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 --force 强制解析所有依赖项,即使上次还原已成功,也不例外。...-v|--verbosity 设置命令的详细级别。 允许使用的值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。
项目通过项目引用或 NuGet 包引用所依赖的其他库。 对于目标版本低于 .NET Core 3.0 的可执行项目,通常不会将 NuGet 中的库依赖项复制到输出文件夹。...而是在运行时从 NuGet 全局包文件夹中对其进行解析。 考虑到这一点,dotnet build 的产品还未准备好转移到另一台计算机进行运行。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 编译特定框架。 必须在项目文件中定义该框架。...--source 要在还原操作期间使用的 NuGet 包源的 URI。 -v|--verbosity 设置命令的详细级别。...NuGet 包源: .NET CLI复制 dotnet build --source c:\packages\mypackages 生成项目并设置版本 1.2.3.4 作为使用 -p MSBuild
.runtimeconfig.json 文件,其中指定了应用程序所需的共享运行时,以及运行时的其他配置选项(例如垃圾回收类型)。 应用程序的依赖项,将这些依赖项从 NuGet 缓存复制到输出文件夹。...有关如何使用 NuGet 源的信息,请参阅 dotnet restore 文档。 MSBuild dotnet publish 命令调用 MSBuild,后者会调用 Publish 目标。...如果特定项目的 IsPublishable 属性设置为 false,则无法调用 Publish 目标,并且 dotnet publish 命令仅在项目上运行隐式 dotnet restore。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 为指定的目标框架发布应用程序。 必须在项目文件中指定目标框架。...--manifest 指定一个或多个目标清单,用于剪裁与应用程序一同发布的一组包。 清单文件是 dotnet store 命令输出的一部分。
要特别注意:由于我们是一个 NuGet 工具,不需要被其他项目直接依赖,所以此项目的依赖包不应该传递到下一个项目中。...表示这一项打包到 NuGet 中的路径。...DevelopmentDependency 是为了说明这是一个开发依赖,设置为 true 将阻止包作为依赖传递给下一个项目。(事实上这又是官方的一个骗局!因为新版本的 NuGet 竟然去掉了这个功能!...我们找一个其他的项目,然后在 Visual Studio 中设置 NuGet 源为我们那个 NuGet 工具项目的输出路径。 ?...总结 不得不说,制作一个跨平台的基于 MSBuild Task 的 NuGet 工具包还是比较麻烦的,我们总结一下: 准备项目的基本配置(设置各种必要的项目属性,安装必要的 NuGet 依赖) 建立好
NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NET 的包平台;我们可以利用 NuGet 发布我们的工具并自动启用这样的工具。...表示这一项打包到 NuGet 中的路径。...DevelopmentDependency 是为了说明这是一个开发依赖,设置为 true 将阻止包作为依赖传递给下一个项目。(事实上这又是官方的一个骗局!因为新版本的 NuGet 竟然去掉了这个功能!...编译期间会自动设置的全局属性,代表此项目编译过程中临时文件的存放路径(也就是我们常见的 obj 文件夹)。...我们找一个其他的项目,然后在 Visual Studio 中设置 NuGet 源为我们那个 NuGet 工具项目的输出路径。 ?
我之前的博客中有介绍如何在项目中生成额外的代码,也有介绍制作一个生成代码的 NuGet 包。...但如果希望完整了解基于 MSBuild 生成代码的原理,你可以需要了解以下知识或教程: 理解 C# 项目 csproj 文件格式的本质和编译流程 如何创建一个基于命令行工具的跨平台的 NuGet 工具包...如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 准备项目 我们创建一个全新的项目,用来了解如何实时生成代码。...-- 注册 WalterlvDemoFile 项为一个 Item,这样它的通用属性就能被识别了。...NuGet 工具包 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 Roslyn
NuGet 包中以链接的形式包含到项目中,并且此文件在 Visual Studio 的解决方案列表中不可见。...NuGet 工具包 - 吕毅 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - 吕毅 每次都要重新编译?...让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 - 吕毅 如何最快速地将旧的 NuGet 包 (2.x, packages.config) 升级成新的 NuGet...随后根据 PropertyGroup 里面设置的属性正确显示属性面板中的状态,根据 ItemGroup 中的项正确显示解决方案管理器中的引用列表、文件列表。...NuGet 包时自动为我们在 csproj 中插入了以上代码。
NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 什么?...文件路径 项路径 写在 csproj 文件中 ItemGroup 组中的每一个元素即“项”。...="A;B;C" > $(MSBuildBinPath): MSBuild 程序所在的路径 $(MSBuildBinPath): MSBuild 程序所在的路径 $(MSBuildBinPath): MSBuild...程序所在的路径 $(MSBuildBinPath): MSBuild 程序所在的路径 如果希望了解在 csproj 中创建 NuGet 包时可用的属性,请参考我的另一篇博客:项目文件中的已知 NuGet...属性(知道了这些,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。
}} 3.3 在目标项目中使用 Task 项目和目标项目在同一个大的仓库中,这里可以使用相对路径的方式直接引用。...为 netstandard2.0,支持输出 nuget 包供外部使用。...也可能 .targets 文件名是必须与 dll 的输出文件名一致?或者必须与 AssemblyName 的设置一致?或者是必须与 nuget 包的名称一致?...为 true, 使用 Import 直接导入相对路径下的 .targets 文件。...本地测试时,需要将 nuget 包所在路径,添加为 nuget 包源。
指定项目支持的框架,以及有关如何为特定框架构建项目的配置详细信息。 标识独立应用的目标平台,它含有其所有依赖项,包括对应平台所需的特定于平台的 .NET Core 运行时。...Frameworks 和 dependencies dependencies此部分列出了你的项目所依赖的各个 NuGet 包,包括所述依赖项的版本号。...程序包: https://www.nuget.org/packages/NETStandard.Library/,里面包含了多个目标版本,类似于老的PCL方法,以后就使用NETStandard.Library...,在nuget管理中也可以看到这是默认的离线包目录,我们需要什么样的包只要把它复制到这个目录,在nuget管理中的程序包源选择离线的源即可。...project.json.lock Project.json.lock 存储编译所需文件的列表(通常为 NuGet 引用)。
7、配置多目标框架 关于如何指定多目标框架,请参考博客《.NET Standard SDK 样式项目中的目标框架》 我做的BIMFACE二次开发的接口的目标是支持 .NET Framework4.0...我的本地路径为:C:\Users\Savion\.nuget\packages ? ?...MSBuild 项目中使用的每个 Property 元素必须是 PropertyGroup 元素的子元素。其包含如下的子元素 ? ? ?...静态文件如何指定复制行为等,或许会发现安装NuGet之后希望能编辑的文件仅仅只是一个链接而已,如何让它包含在项目里面呢,请参考微软官方文档 NuGet ContentFiles揭秘,带回解决方案级包的讨论...vs2017中,已不支持此功能,NuGet 3 - 什么和为什么-Powershell安装和卸载脚本 关于nuget包安装的相关行为估计都可以通过msbuild属性或者任务来搞定,这一切都是可以通过命令行来执行的
在使用 NuGet 包来分发源代码时,如果目标项目是 WPF 项目,那么会有一大堆的问题。 本文将这些问题列举出来并进行分析。...的坑很多,详见: MSBuild/Roslyn 和 NuGet 的 100 个坑 基础代码:最小的例子 为了让 NuGet 源代码包对 WPF 项目问题暴露得更彻底一些,我们需要一个最简单的例子来说明这一问题...我们是通过项目中设置了属性 BuildOutputTargetFolder 让生成的文件跑到这里来的,目的是避免安装此 NuGet 包之后,引用了我们生成的 dll 文件。...包中自动 Import 的部分没有加入到依赖项中,所以实际上包中的 .props 和 .targets 文件都不会被 Import 进来,这可能造成部分 NuGet 包在 WPF 项目中不能正常工作。...ReferencePathTypeName,传入了字符串常量 ReferencePath,这是为了在生成临时项目文件时使用正确的引用路径项的名称。
试过直接通过DLL生成,但是会遇到包描述、版本等信息不自动更新的问题,最重要的DLL所引用的NuGet.org的包,不能自动包含进去。...要确保MSBUILD和NUGET好用,需要找到系统环境变量,添加路径(记得重启电脑,以便生效)。...找到Path项 1、增加:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin 2、增加:E...:\VS\DotNet.WMS.US\DLL\DotNet 第一个是MSBuild,如果你是VS 2019社区版,直接复制,如果不是,请找到相应的路径。...这块设置参考这篇文章:https://www.cnblogs.com/chenug/p/9290281.html 命令:del *.nupkg ; roj=dir *.csproj ;MSBuild roj
如何更精准地设置 C# / .NET Core 项目的输出路径?...: 在 Target 中获取项目引用的所有依赖(dll/NuGet/Project)的路径 在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 % 引用集合中某一个项的某个属性...: 在项目文件 csproj 中或者 MSBuild 的 Target 中使用 % 引用集合中每一项的属性 ' 在形成一个字符串的时候,会使用到此字符。...下面这篇博客列出了此字符的一些使用: MSBuild 如何编写带条件的属性、集合和任务 Condition? ; 如果存在分号,那么在形成一个集合的时候,会被识别为集合中的各个项之间的分隔符。...下面这篇博客虽然古老,却也说明了其用法: 为 Visual Studio 使用通配符批量添加项目文件 转义 在 MSBuild 中,由于这些特殊字符其实非常常见,所以与一些已有的值很容易冲突,所以需要转义
例2: 注:上述的修改,并不对MB1A/MB1C等事务中的明细项目生效!!...例3:对抬头的某些字段设置为必输项 此外,若要对抬头的字段设置其字段选择(Field selection)属性,则执行IMG -> Material Management -> Inventory Management...and Physical Inventory -> Field Selection for Goods Movements Initial/Header Screens (OMJN)中来设置,如MB1A...中的字段Reason of Movement,其技术名称RM07M-GRUND,设置为必输项,如下: ?...则在所有货物移动的事务中,此字段都是必输项了。
一个差量编译的例子 先看一个 Target 的例子,这里例子来源于我的另一篇文章如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - 吕毅。...NuGet 工具包 - 吕毅 差量编译的关键 每一个 Target 都有 Inputs 和 Outputs 属性,可以设置,也可以不用设置。...因为差量编译的判定规则是 “文件存在,且前后两次编译的大小和修改时间相同”。 Inputs 和 Outputs 的格式都是一组用 ; 分隔的字符串,每一项都是一个文件的路径。...假设我们指定 Inputs 为 @(Compile),Outputs 指定为某个 xxx.exe 生成的临时文件的位置(在 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 一文中,我假定为了...典型的例子如我在如何创建一个基于命令行工具的跨平台的 NuGet 工具包 中写的那个 NuGet 工具。
若要运行应用程序,dotnet run 命令需从 NuGet 缓存解析共享运行时之外的应用程序依赖项。 因为它使用缓存的依赖项,因此,不推荐在生产中使用 dotnet run 来运行应用程序。...大多数项目的默认配置为 Debug,但你可以覆盖项目中的生成配置设置。 -f|--framework 使用指定框架生成并运行应用。 框架必须在项目文件中进行指定。...--os 指定目标操作系统 (OS)。 这是用于设置运行时标识符 (RID) 的简写语法,其中提供的值与默认 RID 相结合。...在 .NET 7 中将逐渐淘汰这种灵活使用 -p 来表示 --project 的做法。 --property:= 设置一个或多个 MSBuild 属性。...--runtime 指定要为其还原包的目标运行时。
Create a NuGet package(创建一个NuGet包). publish: Publish a .NET project for deployment(发布一个.NET项目以进行部署)....remove: Remove a package or reference from a .NET project(从.NET项目中删除程序包或引用). restore: Restore dependencies...specified in a .NET project(恢复.NET项目中指定的依赖项). run: Build and run a .NET project output(构建并运行.NET项目输出...(从项目中删除软件包引用。) remove reference: Removes project reference....msbuild: Builds a project and all of its dependencies.(构建项目及其所有依赖项。)
安装完毕后,nuget 程序目录为: C:\Program Files\nuget 请添加目录到系统环境变量中。...安装各种需要的工具后,环境变量一共需要添加以下项: C:\Program Files (x86)\MSBuild\14.0\Bin C:\Program Files\Git\cmd C:\Program...一般一个解决方案中,有一个是需要发布的主程序(主要为 Web 应用),请为需要发布的 Web 项目,添加 Nuget 引用,搜索 MSBuild.Microsoft.VisualStudio.Web.targets...包,添加引用到项目中。...保存设置后,在项目的 Properties\PublishProfiles 目录,可以找到 FolderProfile.pubxml 文件,其中有一行 PublishUrl 属性,为网站发布时的输出目录