.NET 扩展编译用的文件有 .props 文件和 .targets 文件。不给我选择还好,给了我选择之后我应该使用哪个文件来编写扩展编译的代码呢?...工具包 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 当我们创建的 NuGet 包中包含 .props 和 .targets 文件的时候,我们相当于在项目文件...-- 当生成 WPF 临时项目时,不会自动 Import NuGet 中的 props 和 targets 文件,这使得在临时项目中你现在看到的整个文件都不会参与编译。...然而,我们可以通过欺骗的方式在主项目中通过 _GeneratedCodeFiles 集合将需要编译的文件传递到临时项目中以间接参与编译。...WPF 临时项目不会 Import NuGet 中的 props 和 targets 可能是 WPF 的 Bug,也可能是刻意如此。
项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) 发布于 2018-05-10 13:49...更新于 2018-06-30 01:30 知道了 csproj 文件中的一些常用 NuGet 属性,创建 NuGet 包时就可以充分发挥新...---- “项目文件中的已知属性系列”分为两个部分: 项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - 吕毅 本文:项目文件中的已知 NuGet 属性(使用这些属性,创建...-- 大致与 IncludeSymbols 相同,不过只会额外把 pdb 和 Compile 类型的文件打包到 NuGet 包中。...例如 Pack 属性可以额外指定一或一组通配符文件需要被打包到 NuGet 包中;PackagePath 则指定了打包到 NuGet 包的路径(NuGet 会通过扩展名来自动识别这是文件夹还是文件,所以可以通过这个属性来重新指定名称
该命令的结果是一个 NuGet 包,也就是一个 .nupkg 文件。 如果要生成包含调试符号的包,可以使用以下两个选项: --include-symbols:该选项用于创建符号包。...--include-source:该选项用于创建带有 src 文件夹的符号包,该文件夹包含源文件。 将被打包项目的 NuGet 依赖项添加到 .nuspec 文件,以便在安装包时可以进行正确解析。...如果希望避免此行为,则传递 --no-build 选项。 此选项在持续集成 (CI) 生成方案中通常非常有用,你可以知道代码是之前生成的。 备注 在某些情况下,无法执行隐式生成。...有关详细信息,请参阅 NuGet 包目标属性和 MSBuild 命令行引用。 示例部分介绍了如何在不同的情况下使用 MSBuild -p 开关。 默认情况下,Web 项目不可打包。...--include-source 除输出目录中的常规 NuGet 包外,还包括调试符号 NuGet 包。 源文件包括在符号包内的 src 文件夹中。
NuGet 还原依赖项以及在 project 文件中指定的特定于项目的工具。...若要指定其他源,请执行以下任一项操作: 在项目目录中创建自己的 nuget.config 文件。 有关详细信息,请参阅本文后面介绍的常见 NuGet 配置和 nuget.config 差异。...有关如何使用经过身份验证的源的信息,请参阅使用经过身份验证的源中的包。 全局包文件夹 对于依赖项,可以使用 --packages 参数指定还原操作期间放置还原包的位置。...例如,在 NuGet.Config 中设置 globalPackagesFolder 会将还原的 NuGet 包置于指定的文件夹中。...自变量 ROOT 要还原的项目文件的可选路径。 选项 --configfile 要使用的 NuGet 配置文件 (nuget.config)。 如果指定,则只使用此文件中的设置。
问题详情 如下图所示(部分): 出现该错误,是因为应用程序中需要使用到jquery(现在的web应用程序哪个能离开jquery呢),而目前程序目录中并没有jquery文件,或者有jquery文件但是程序并不知道...可以从jquery官网下载最新版的jquery源文件,然后在应用程序的根目录下新建一个Scripts文件夹用来放置js文件,将jquery源文件解压到该目录中。...如果你使用的版本是vs2013及以上版本,则会方便很多,因为会有内置了NuGet软件包管理,在引用上右击鼠标,会出现NuGet程序包管理选项,点击就会出现管理界面: 出现管理界面之后,在搜索框中搜索jquery...由于我已经安装了jquery,所以该右侧出现的是卸载和更新,如果是项目中没有jquery,则会显示安装按钮。...点击安装之后,NuGet会自动创建Scripts文件夹并将jquery源文件下载到该文件夹中。
Nuget包的剖析 Nuget软件包不仅是dll文件。NuGet包是可移植的,它包含您要放入.Net项目中的所有内容。您可以在其中放置txt文件或png文件。这就是为什么我们称它们为“包裹”。...因此,只需查看其中的文件夹和文件。 icon.png: 这是您的NuGet包的图标文件。现在已将其嵌入.nupkg中,但在早期版本的NuGet中只能定义为url。....nuspec nuspec是关于nuget包的元数据文件。在早期版本中,它曾经用于打包nuget包。但是在新的dotnet CLI中,此文件是由roslyn编译器从您的.csproj文件生成的。...转到nuget.org并登录到你的帐户。然后导航到“发布”选项卡,并将您的.nupkg文件拖放到该页面中。填写有关包裹的信息字段并提交。仅此而已!这是在nuget.org上发布软件包的最简单方法。...dotnet pack --configuration Release -o .packages/ 这意味着在发布模式下构建项目,并将输出文件放置到“ .packages”文件夹中。
已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以及更新组件即可一键完成,大大提升工作效率,减少不必要的引用报错。...从运维角度,可在不影响老版本的情况下发布新版本,可统一管理公司各个项目中组件版本不一和各个版本组件的使用情况,减少故障发生以并使得项目稳定运行。...这个操作的结果是两个 nupkg 扩展名的包。一个包含代码,另一个包含调试符号。 该项目被依赖的 NuGet 包装被添加到 nuspec 文件,因此,他们能够在安装包时得到解决。...dotnet pack --output nupkgs 打包当前的应用程序,并将生成的包放置到指定的文件夹中。...dotnet pack --no-build --output nupkgs 打包当前的项目到指定的文件夹中,并跳过生成步骤 回到我们在.NET Core系列 :3 、使用多个项目 创建的类库项目DotnetNewLib
nuget下载 实际项目中,我们可能一个解决方案下面会有N多个项目,每次发布这N多个项目都会使用统一的版本号一起发布到Nuget服务器。...第一步,在common.ps1中配置我们的解决方案以及项目路径 我们把$solutions这个变量中的内容替换成我们的解决方案的相对路径。...这里你在执行powershell脚本的时候可能会报如下的错误 ?...Set-ExecutionPolicy 可更改 Windows PowerShell 执行策略的用户首选项。...要在 Windows Vista、Windows Server 2008 和 Windows 的更高版本上运行此命令,必须使用"以管理员身份运行"选项启动 Windows PowerShell,
但是刚好就在那天,大法更新了 NuGet 到 5.8 的版本。.../13116888 这个版本的 NuGet 被包含在 VS 16.8 和 .NET 5 SDK 里面,但是我依然需要独立的 NuGet 执行文件来辅助构建古老的项目 将下载的独立的 NuGet 放在一个文件夹...,然后将这个文件夹设置到环境变量的 Path 里面。...这一步相对复杂,我也不打算多说…… 因为真不是必要的,除非你也有古老的项目需要支持 下一步就是去下载 VS 了,我使用的是专业版来进行构建,和微软的销售聊了,其实不需要使用企业版来作为构建服务器的构建工具...远程下载的逻辑替换为使用本地的文件 这里我使用dotnet职业技术学院的下载库制作的下载器进行下载,这是一个在 GitHub 完全开源的仓库,请看 https://github.com/dotnet-campus
://api.nuget.org/v3/index.json 或者推送此文件夹下 0.8.0-alpha 版本的所有 NuGet 包: 1 nuget.exe push *.0.8.0-alpha.nupkg...关于使用 Directory Opus 继承工具栏按钮的细节,可以阅读我的另一篇博客: 在 Directory Opus 中添加自定义的工具栏按钮提升效率 - walterlv 具体来说,就是安装上文中所述的方法添加一个按钮...-Source https://api.nuget.org/v3/index.json 其中,中间的 xxx 是使用正则表达式匹配的 {file} 文件名 {file} 是 Directory Opus...当前选中的文件,我用正则表达式匹配出其版本号和后面的 .nupkg 后缀 将正则表达式匹配出来的文本作为 nuget push 的包,最终生成的命令会非常类似于本文一开始提到的命令 nuget push...毕竟我一次编译产生的 NuGet 包太多了,还是需要使用这样的方式来提高一点效率。至于为什么不用持续集成,是因为目前 SourceYard 还不支持在 GitHub 上集成。
workflows 文件夹创建 *.yml 文件就可以作为 action 配置文件 创建一个随意命名的 yml 文件在 .github/workflows 文件夹,完成创建配置文件 标识 每个 workflow...脚本 python 使用 python 命令 sh 使用 sh 命令 cmd 使用批处理脚本 powershell 使用 powershell 脚本 在执行上面代码的要求是在仓库的文件夹存在 .sln...文件,如果仓库文件夹不存在,那么需要加入 sln 所在的路径 安装 nuget 应用 在 windows 平台都没有安装 nuget 需要从官方下载 下载 nuget 需要多句命令,在 action...snupkg 文件 现在就完成了合并代码到 master 分支自动执行持续集成,打包完成自动上传 nuget 和 github 同时配置很简单 全部代码 下面代码直接复制可能无法在你的项目运行,请根据你的项目修改...上面的代码在 SourceYard 使用,这是我开源的项目,支持制作源代码的 nuget 库文件。
1.然后安装 NuGet Gallery[2],这个可以在VS Code 中管理Nuget包。...创建一个 .NET Core 应用程序 在本地创建一个文件夹 dotnet, 然后按住 Shift + 鼠标右键 , 选择 在此处打开 Powershell , 输入 dotnet new,会列出所有的模板项目...这里我输入 dotnet new mvc,创建一个MVC项目,会程序项目文件,然后输入 dotnet new sln,生成一个解决方案,最后用 VS Code 打开这个文件夹 运行项目 现在,让我们在...•像在Visual Studio中一样,在VS Code中使用内置的运行选项。...- 运行测试用例•dotnet publish - 在主机环境中发布源•dotnet new sln-为所选项目创建解决方案文件 总结 在本篇文章中,我们演示了如何在VS Code 中运行和调试.NET
://www.52chat.cc/) Newbe.Mahua.Amanda 可以在同一个项目中安装多个平台支持包,如此一来,一个项目进行开发,多个平台同时支持。...Newbe.Mahua.Plugins.Parrot { /** * 此文件为了演示方便,将所有的类合并在同一个文件中,实际项目中可以根据要求分开放置 */ //...,然后双击位于项目根目录的build.bat文件。...复制文件到机器人平台 在bin目录下会按照当前安装的平台生成相应的目录。本示例将会生成CQP和Amanda两个目录。 分别将两个目录中的文件复制到对应的机器人平台根目录。...启用插件 CQP 打开酷Q文件夹下的 conf\CQP.cfg 文件,并在文件末尾插入以下两行,即可开启开发者模式。 [Debug] DeveloperMode=1 打开插件管理将插件启用。
答案是可行的,接下来就来看看怎么玩。 ? ---- Windows 下我们用 oh-my-posh 在 PowerShell 中实现这样的效果。...敲 $profile 可以让 PowerShell 告诉我们这个文件的路径是什么。当然下图是我的路径,读者的默认在文档路径里的 PowerShell 文件夹下。 ?...原生 PowerShell 可没有这个功能啊! ? 我们选择 Agnoster 主题。(这些主题都是 oh-my-posh 带给我们的。) 接下来我们看看 git 文件夹下的显示: ?...可参见 自定义 Windows PowerShell 和 cmd 的字体 感受一下。 所以,这里更倾向于在安装了字体的情况下使用第三方 PowerShell。...比如下图是我用 vscode 中带的 PowerShell 的效果。 ?
抄起脚本一把梭 对项目进行持续集成和持续发布是现在项目开发中非常基础的要求。现在可选的自动化构建引擎很多。Jenkins、Gitlab、TFS、TeamCity等都是很好的选择。...很多项目都基于这些自动化构建引擎实现了项目的持续集成和持续发布。 一般,自动化引擎都提供了简单的构建步骤,开发者可以直接使用内置的步骤,便可以实现自动化需求。...在最新的 Powershell 6 中,由于基于 Netcore 2.0 作为运行时,Powershell 6 具备了跨平台运行的特性。...因此,使用这种脚本语言编写的脚本可以在不同的操作系统平台上运行。 Psake Psake 是一个基于 Powershell 的脚本语言框架。通过这种框架,可以结构化的管理自己的脚本。...properties { # 定义一个变量,指向当前文件夹所在的位置 $rootNow = Resolve-Path . } # 默认任务。
在编写项目文件或者 MSBuild Target 文件的时候,我们经常会使用 来定义集合中的一项。在定义的同时,我们也会额外指定一些属性。...然而这些属性如何拿到并且使用呢?本文将介绍使用方法。 ---- 将下面的代码放到你项目文件的末尾,最后一个 的前面,可以在编译的时候看到两个新的警告。...在定义 WalterlvY 集合的时候,我们使用了 %(Compile.FileName) 来获取编译文件的文件名。...于是,你在警告信息中看到的两个警告信息里面,一个输出了 Compile 集合中每一项的标识符(通常是相对于项目文件的路径),另一个输出了每一个 Compile 项中的 FileName 属性。...需要注意,如果 % 得到的项中某个属性为空,那么这一项在最终形成的新集合中是不存在的。
files节点可以包含file子节点,它包含src和target两个属性,来分别制定要包含的文件路径和目标路径,在src中还可以使用*和**通配符,想要了解更详细的说明,请参阅http://docs.nuget.org...在nuget文档结构约定中,包含了如下三个文件夹: lib:包含目标程序将要引用的dll文件。...tools:在解决方案或者项目中包含的一些powershell脚本,以及一些可以在Nuget package console中访问的应用程序。...在本文示例中,创建了content和lib文件夹 ?...在lib文件夹中,我们可以指令在不同的.net framework版本中,要包含的不同文件的引用,我们可以在任意目录中包含它们,而并不只是在lib文件夹中。
Donut Caching是缓存除了部分内容以外的整个页面的最好的方式,在它出现之前,我们使用“输出缓存”来缓存整个页面。...何时使用Donut Caching 假设你有一个应用程序中有像“主页”这种页面,它除了用户登录的用户名以外总是给用户呈现相同的或者很少变化的内容。这时你可能需要缓存大部分的内容。...Donut Caching 的Nuget 包 使用Donut Caching之前,你需要在Visual studio中使用Nuget安装包,一般直接键入命令安装: install-package MvcDonutCaching...安装完成后,你就可以通过在action或者controller上添加DonutOutputCache标签来控制缓存了,大多数OutputCache的标签都可以在DonutOutputCache中使用。...,它用来缓存页面中的一小部分。
在这个页面的右边将会列出你的所有项目,鼠标移动到项目上可以看到 Add 按钮,点击就可以添加 添加完成返回页面,点击对应项目的设置选项,在设置选项里面提供了很多编译的设置,在设置完成之后,可以看到...在这个环境标签还可以设置编译时的环境变量和 HOST 等 在准备完成了环境,下一步就是 Build 了,在开始选择了自己的项目之后,在自动构建里面将会自动识别这是一个 .NET 的程序,可以使用...在 Build 页面最下可以找到编译前执行命令,我使用的是之前版本的 csproj 格式,需要通过 NuGet 命令行还原。...此时需要点击添加脚本命令,可以看到提供的脚本有 PowerShell 和 .NET Core 版本的 PowerShell 和 Cmd 等脚本方式,我这里选择使用 Cmd 脚本 在使用的 VisualStudio...小伙伴一看这个项目就知道这个项目的作者是不是逗比了,一个编译不通过的项目都敢放在这 还是回到主题,通过自动构建可以在每次提交和修改的时候自动跑一下编译,因为有些小伙伴会在提交的时候忘记添加一些文件,或者依赖自己本地的某些文件才能编译成功
在自动迁移那篇文章中,我提到了一些兼容性问题,最大的莫过于 Install.ps1 脚本不再执行: 使用 PackageReference 后,在安装和写在的过程中 install.ps1 脚本将不再执行...如果你不清楚 props 或者 targets 是什么意思,或者不知道怎么写它们,可以阅读我的另一篇文章理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅。...前面那一句的 PackageId 指的是这个 NuGet 包的包 Id。比如,在我的例子中,是 Walterlv.NuGetDemo.targets。 比如,生成的 Target 节点是这样的: <!...,加入 targets 接着,去 nuspec 文件中,删除 Install.ps1 和 Uninstall.ps1,然后新增我们刚刚写的 targets 文件。...本文会经常更新,请阅读原文: https://walterlv.com/post/migrate-nuget-package-from-powershell-to-props-and-targets.html