首页
学习
活动
专区
圈层
工具
发布

如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 发布于 2018-05-11 16:04...我分为两篇可以减少完成单个任务的理解难度: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 第零步:前置条件 第一步...使用 LogWarning 方法可以输出警告,使用 LogError 可以输出错误。如果输出了错误,那么就会导致编译不通过。...让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译。 本地测试 NuGet 包 在发布 NuGet 包之前,我们可以先在本地安装测试。...总结 不得不说,制作一个跨平台的基于 MSBuild Task 的 NuGet 工具包还是比较麻烦的,我们总结一下: 准备项目的基本配置(设置各种必要的项目属性,安装必要的 NuGet 依赖) 建立好

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    正在将脚本编译迁移到MSBuild,并将实现对NuGet包的兼容

    本号已有原创文章250+篇,以软件工程为纲,DevOps为基,洞察研发效能全貌,涵盖从需求管理、应用开发、软件测试、发布部署到运营监控的完整流程。...无论您是项目经理、产品经理、开发人员、测试人员,还是运维人员,在这里您都可以有所收获,同时深入理解其他角色的工作内容,共同助力DevOps的成功落地。...在不久前,一则令人振奋的消息在游戏开发社区引起了广泛的关注和讨论:Unity官方已经宣布,他们正在将脚本编译迁移到MSBuild,并将实现对NuGet包的兼容。...然而,在Unity的生态系统中,一直缺乏对NuGet包的支持,这使得许多依赖于NuGet的开发者在Unity项目中无法充分利用这些强大的库和工具。...MSBuild是微软开发的一个构建工具,它提供了强大的项目构建和自动化管理能力。通过迁移到MSBuild,Unity将能够更好地与.NET生态系统整合,从而实现对NuGet包的兼容。

    52710

    Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译

    msbuild 编译时提示找不到类 这个问题是 msbuild 的一个坑,主要是没有主动引用 .nuget.g.props 和 .nuget.g.targets 文件,使用 Microsoft.NET.Sdk...和 $(ProjectName).csproj.nuget.g.targets 文件;其中 .nuget.g.props 和 .nuget.g.targets 中生成了 Import 包中编译相关文件的代码...具体请看MSBuild/Roslyn 和 NuGet 的 100 个坑 - walterlv 但是在使用 Nuget 引用源代码的时候,因为此时源代码还没加入到编译,在编译的时候 msbuild 找不到类..."> 添加了这两个引用就可以解决源代码引用的时候出现了在 VisualStudio 可以跳转找到类,但是在编译的时候找不到类的问题 MSBuild/Roslyn...%90%E7%A4%BA%E6%AD%A3%E5%B8%B8%E4%BD%86%E6%98%AF%E6%97%A0%E6%B3%95%E7%BC%96%E8%AF%91.html ,以避免陈旧错误知识的误导

    1.2K20

    在项目文件 MSBuild NuGet 包中编写扩展编译的时候,正确使用 props 文件和 targets 文件

    从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目) - walterlv 如何创建一个基于 MSBuild Task 的跨平台的 NuGet...工具包 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 当我们创建的 NuGet 包中包含 .props 和 .targets 文件的时候,我们相当于在项目文件...所以我们通过一个属性开关 `ShouldFixNuGetImportingBugForWpfProjects` 来决定是否修复这个错误。...ShouldOptimizeDebugging> 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/write-msbuild-codes-into-props-or-targets.html...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

    1.9K20

    win10 uwp 使用 msbuild 命令行编译 UWP 程序

    sln 的方式 在命令行跳转盘符,如从原来的C盘到 D 盘可以通过 盘符: 的方式 cmd> D: 这样就可以跳转到 D 盘,在进入指定的文件夹,可以输入 cd 文件夹 的方式 如果自己输入很容易就输入错误.../t:clean // 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:clean 还原 Nuget 包 msbuild /t:restore // 带路径 msbuild...StoreUpload /p:AppxBundlePlatforms="x86|x64|arm" 例如在集成工具使用,实际大多数的集成工具默认都有配置 UWP 的编译,具体请看 win10 uwp 使用 Azure DevOps.../t:clean 如果有了 git 的清理,实际也就不需要使用 msbuild 的清理,只是防止有逗比上传了 obj 文件夹 msbuild /t:restore 欢迎 nuget 包,注意添加自己的...nuget 网站,如果自己用了内部的 nuget 就需要自己添加 msbuild /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir

    1.6K20

    win10 uwp 使用 msbuild 命令行编译 UWP 程序

    sln 的方式 在命令行跳转盘符,如从原来的C盘到 D 盘可以通过 盘符: 的方式 cmd> D: 这样就可以跳转到 D 盘,在进入指定的文件夹,可以输入 cd 文件夹 的方式 如果自己输入很容易就输入错误.../t:clean // 带路径 msbuild "E:\lindexi\UWP\Foo.sln" /t:clean 还原 Nuget 包 msbuild /t:restore // 带路径 msbuild...AppxBundlePlatforms="neutral" /p:Platform="AnyCPU" 例如在集成工具使用,实际大多数的集成工具默认都有配置 UWP 的编译,具体请看 win10 uwp 使用 Azure DevOps.../t:clean 如果有了 git 的清理,实际也就不需要使用 msbuild 的清理,只是防止有逗比上传了 obj 文件夹 msbuild /t:restore 欢迎 nuget 包,注意添加自己的...nuget 网站,如果自己用了内部的 nuget 就需要自己添加 msbuild /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir

    1.2K20

    语义版本号(Semantic Versioning)

    当我们在向全世界提供一个库(比如 NuGet 包)的时候,我们怎么让团队所有人都知道我们正在为哪个版本开发新功能呢?我们又应该在何时更新程序集或者 NuGet 的版本号呢(在功能开发开始?差不多完成?...如果你希望方便,在执行 dotnet build 或 dotnet pack 命令之后能够直接得到使用语义版本号的 NuGet 包,那么你必须拥有一个新格式的 csproj,就是 .NET Core 带来的那种新格式.../p:Version=1.6.2-beta > msbuild /p:Version=1.6.2-beta 当然,你还可以使用响应文件来简化参数,详情可阅读我的另一篇博客 使用 MSBuild 响应文件...– Microsoft DevOps Blog Versioning NuGet packages in a continuous delivery world: part 3 – Microsoft...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

    2.5K31

    dotnet 配置 Gitlab 的 Runner 做 CI 自动构建

    如果安装的不是 VisualStudio 2019 企业版,那么请将上面路径替换为你的 msbuild 路径 接下来进入 nuget.org 官网,点击下载,下载最新的 NuGet 工具,将下载的 NuGet...原因是如果没有配置将会提示系统找不到文件 系统找不到指定的路径。...同时项目使用 SDK 格式,此时的 NuGet 将会放在 user\.nuget 文件夹里面,而如果 runner 使用的是服务运行,使用的用户是 System 那么将找不到 user 文件夹,此时的...CBB 基本上通过某个 NuGet 包回溯到对应的 Tag 是十分需要的功能,否则会被小伙伴砍的。...我用到了一个 NuGet 包,我发现这个包有问题,我如何拿到这个包的代码?这是最大的坑。

    2.8K20

    dotnet pack

    该命令的结果是一个 NuGet 包,也就是一个 .nupkg 文件。 如果要生成包含调试符号的包,可以使用以下两个选项: --include-symbols:该选项用于创建符号包。...可向 dotnet pack 命令提供 MSBuild 属性,用于打包进程。 有关详细信息,请参阅 NuGet 包目标属性和 MSBuild 命令行引用。...在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,dotnet restore 命令仍然有用。...--include-source 除输出目录中的常规 NuGet 包外,还包括调试符号 NuGet 包。 源文件包括在符号包内的 src 文件夹中。...--include-symbols 除输出目录中的常规 NuGet 包外,还包括调试符号 NuGet 包。 --interactive 允许命令停止并等待用户输入或操作。 例如,完成身份验证。

    2.2K20

    VisualStudio 2017 项目格式 自动生成版本号 添加注释防止警告生成的文件自动添加版本

    的,那么就需要做一些设置,在继续阅读文本,我希望大家先看项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - walterlv 添加注释 如果需要在发布的...$(Revision) 打包的版本号是 PackageVersion ,项目版本号是 Version ,在打包的时候,找不到 PackageVersion...但是很多小伙伴都是设置打包的版本号和项目版本号相同,这样如果有人说某个nuget出现问题,可以很快找到是哪里的问题。...或者发布出去的包,可以通过查看 dll 的版本号就知道是哪个 Nuget 发布,因为 dll 的版本号和 nuget 的相同。...AE%E6%A0%BC%E5%BC%8F-%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E7%89%88%E6%9C%AC%E5%8F%B7.html ,以避免陈旧错误知识的误导

    3.1K20

    Roslyn 如何在 Target 引用 xaml 防止文件没有编译

    本文主要是我自己探索 VisualStudio 编译的过程,所以有一点乱,主要的过程就是遇到了将 xaml 写在了 Traget 里,编译的时候因为找不到 xaml 编译,所以无法编译通过。...当前上下文中不存在名称“InitializeComponent” Program.cs(15,17): Error CS1061: “App”未包含“InitializeComponent”的定义,并且找不到可接受第一个...源代码打包项目是为了解决很小的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的 dll ,大家都知道如果引用的 dll 多了,软件启动速度也就是变慢了。...所以我就使用打包 nuget 包但是引用的是源代码的方式,这样开发者在安装 nuget 之后可以快速调试安装的库的源代码。...项目请看: dotnet-campus/SourceYard: Add a NuGet package only for dll reference?

    1.4K10

    Roslyn 如何在 Target 引用 xaml 防止文件没有编译

    本文主要是我自己探索 VisualStudio 编译的过程,所以有一点乱,主要的过程就是遇到了将 xaml 写在了 Traget 里,编译的时候因为找不到 xaml 编译,所以无法编译通过。...当前上下文中不存在名称“InitializeComponent” Program.cs(15,17): Error CS1061: “App”未包含“InitializeComponent”的定义,并且找不到可接受第一个..."> 源代码打包项目是为了解决很小的代码,都需要做出一个 nuget 包,这个 nuget 包是 dll 也就是软件会引用太多的...所以我就使用打包 nuget 包但是引用的是源代码的方式,这样开发者在安装 nuget 之后可以快速调试安装的库的源代码。...项目请看: dotnet-campus/SourceYard: Add a NuGet package only for dll reference?

    1.1K20

    MSBuildRoslyn 和 NuGet 的 100 个坑

    系列博客 这是兄弟篇中的一篇,关于 MSBuild/Roslyn 和 NuGet 的 100 个坑: MSBuild/Roslyn 和 NuGet 的 100 个坑 由于这篇博客是大量坑的记录,所以是它建立在你已经对...MSBuild/Roslyn 和 NuGet 有一些了解的基础之上的。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...本文会经常更新,请阅读原文: https://blog.walterlv.com/post/problems-of-msbuild-and-nuget.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验

    95030

    Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

    问题:    首先出现这个bug的是在我的vs2017社区版的ide上,这两天使用了出现了一个非常神奇的问题,就是我程序中的nuget包总提示找不到源文件,并且我点击Nuget还原的话还一直提示着一个问题...严重性 代码 说明 项目 文件 行 禁止显示状态 错误 项目 JJHL.WEB 的 NuGet 包还原失败: 找不到“11.0.2”版本的程序包“Newtonsoft.Json”。...请查看“错误列表”窗口了解详细警告和错误。...从这里我发现了我的nuget找不到对应的源文夹的话,它只会前往我的c盘下的,C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\ 这个位置找相应的源包...选择NuGet包管理器>程序包源>添加获取包源位置(https://www.nuget.org/api/v2/)名称可随意 ? 最后再重启vs,然后在点击NuGet还原就好了!!!

    4.7K40

    MSBuildRoslyn 和 NuGet 的 100 个坑

    ---- 系列博客 这是兄弟篇中的一篇,关于 MSBuild/Roslyn 和 NuGet 的 100 个坑: MSBuild/Roslyn 和 NuGet 的 100 个坑 由于这篇博客是大量坑的记录...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。...本文会经常更新,请阅读原文: https://walterlv.com/post/problems-of-msbuild-and-nuget.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验

    1.7K20
    领券