首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为 NuGet 指定检测的 MSBuild 路径或版本,解决 MSBuild auto-detection: using msbuild version 自动查找路径不合适的问题

使用 nuget restore 命令还原项目的 NuGet 包的时候,NuGet 会尝试自动检测计算机上已经安装的 MSBuild。...---- 问题 当我们敲下 nuget restore 命令的时候,命令行的第 2 行会输出自动检测到的 MSBuild 版本号,就像下面的输出一样: NuGet Version: 5.0.2.5988...虽然命令行输出中推荐使用了 -MSBuildVersion 选项来指定 MSBuild 的版本,但是实际上实现同样功能的有两个不同的选项: -MSBuildPath 自 NuGet 4.0 开始新增的选项...就像下图这样,我们把 2019 版本的 MSBuild 设置到了 2017 版本的前面。...以下是 NuGet 项目中自动查找 MSBuild.exe 文件的方法,源代码来自 https://github.com/NuGet/NuGet.Client/blob/2b45154b8568d6cbf1469f414938f0e3e88e3704

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

    dotnet 配合 GitHub 的 Action 做自动推 Tag 时打包 NuGet 包

    因为 CBB 的特殊性,我要求每个 NuGet 正式发布的包都应该有一个对应的 Tag 号,这样将 NuGet 库安装到项目里面,之后发现问题了还能找到对应版本的代码 在阅读本文之前,期望小伙伴能了解如何在...版本号写入到版本号文件里面 在使用这个工具的时候有一个前提是在项目的 Build 文件夹存放一个 Version.prop 文件,此文件夹是版本号文件。...Version.prop 版本号文件 在开始之前,请在 .github\workflows 文件夹新建一个 yml 文件,所有放在这个文件夹的 yml 文件都会被 GitHub 的 Action 作为配置文件...而开发者最多也就是改版本号做本地打包 此时的项目如果在 csproj 文件没有指定版本号,那么就将会读取版本号文件的版本。...而这个版本会在构建的时候被工具修改为推送的版本号,也就是这个项目构建的输出文件的版本号就是推送的版本号,通过这个方式就可以完成打包 可以看到现在有几个项目都在使用这个方式进行打包,如 dotnet-campus

    1K20

    发布自己的NuGet程序

    下载NuGet Package Explorer 点此下载 新建项目 安装完成后打开 NuGet Package Explorer 通过File >New可以新建一个Package 然后点击Edit...Package Metadata可以编辑 编辑的基本信息如下 需要注意的是 Id是Package的唯一编号 Version是版本号,当版本号发生变化后重新发布时,在NuGet Manager中会有升级提示...表示当前项目的依赖项 Id为依赖Package的Id号 Version为支持的版本[1.0]为至少是1.0版本,[1.0,2.0]为1.0至2.0版本,(1.0,2.0]为需要大于1.0小于等于2.0...的版本 添加.NET程序集 在Package Contents上点击右键选择Add Lib 之后在Lib上点击右键 选择.NET folder 下的no version即可 然后在新建的文件夹中添加...的文件即可 添加代码文件 如果需要向项目中添加项目文件,则添加一个内容为如下代码 1: namespace $rootnamespace$.Models { 2: public struct

    45940

    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\ 这个位置找相应的源包...,然而我这个项目统一升级过的使用svn中央版本控制器空控制的源码,出现这个问题的原因可能是我的同事使用了更加高版本的 Nettonsoft.json 程序包,而我的电脑c盘这个地方恰好又不存在,所以导致了这个原因...解决方法: 修改NuGet包管理器的源为: https://www.nuget.org/api/v2/ 单击工具>选择NuGet管理器>程序包管理器设置 ?

    3.8K40

    一篇适合躺收藏夹的 Nexus3 搭建 NuGet&Docker 私有库的安装使用总结

    推送包的地址需要配置此仓库地址 nuget.org-proxy:代理存储库,缓存 nuget.org 的包并从本地服务器上提供它们 账号的规划及创建 一个企业可能存在着多个团队或项目组,每个团队的包可以分开或者约定好不同的名称前缀...为了更好的使用,可以结合脚本来快速打包,以之前的一个计算字段封装为例将其打包成 NuGet 包推送到 Nexus 中 目录结构如下 首先新建配置一个 .nuspec 模板,根据需要修改库的相关信息,nuspec...#托管仓库地址 nuget_source="https://nexus.devops.test.com/repository/nuget-hosted/" #包的版本 package_version...${package_version}.nupkg" #项目库路径 csproj_path=".....#替换版本号 sed -i 's|version>.

    4.9K40

    阻止某个 NuGet 包意外升级

    阻止某个 NuGet 包意外升级 2018-06-29 09:59 出于兼容性考虑,我们可能不再更新某个项目的 NuGet 包。...LiteDB 是一个不应该被升级的 NuGet 包,但是最新版本已经是 4.1.4 了,很容易被团队中的其他小伙伴误升级。 ?...于是我可以将我们的 BeforeTargets 指定为 CollectPackageReferences。 不过我发现在这种情况下,NuGet 包管理器的界面中能够发现这个项目使用了旧版本。...并且在安装了新版本的包后,将因为多次引用不同版本而导致编译不通过。 所以,方案否决。 最终解决 既然无法阻止发现这个 NuGet 包,那思路就换成无论如何更新,都无效好了。...于是,通过 Remove 和重新 Include 固定版本来解决。 下面是项目的最终解决源码:

    1.3K20

    用十行代码快速创建权限管理系统

    .nupkg 但是这个模板只能是只能创建项目的,却不能像一个ABP那样,可以直接在新建的项目上,通过nuget引用来使用。...nuget组件,可以很方便的直接在自己新建的空项目中,基于Blog.Core项目快速搭建初始化权限管理项目,今天这篇文章就是一个操作文档,仅仅需要十行代码就能创建好这个基建项目。...(BCVP.Sample.OP nuget包) PS:这里说明下,自己新建的项目尽量还是要和Blog.Core整体一致哟,当然,不一致也可以,等你使用了就知道了,前提是Blog.Core项目真的看懂了...1、新建空项目 这里我们还是新建一个空的ASP.NETCore的webapi项目,当然你也可以尝试使用MVC项目,其实都是一样的: 2、引用nuget包 直接在刚刚创建的项目里,安装nuget包...,你可以使用控制台,也可以使用包管理器: Install-Package BCVP.Sample.OP -Version 1.0.6.34 注意截至发稿使用最新版本是1.0.6.34(如果有最新的,请直接用更新的

    56410

    Roslyn 使用 Target 替换占位符方式生成 nuget 打包

    nuget 文件的不相同,第一个是id使用的是$id$ ,这里的id就是使用占位符,可以在项目文件使用 target 的方式替换占位符。...上面代码有 id 和版本都使用占位符,下面就来写 target 来替换两个占位符为项目需要的字符。...这里通过定义 nuget 属性的方式用来替换。 替换的语法是 占位符 = 字符串; 的方法,因为这里的字符串可以使用 $(变量) 的方式,所以就可以用到刚才在上面定义的字符串。...从上面的代码可以看到我多设置了一个dll的字符串,在nuget文件是不存在这个dll字符串,但是也没有问题。...但是可以多设置 nuget 文件不使用的字符串,不可以少设置 nuget 文件存在的字符串,不然就可能出现下面的代码 错误 值不能为 null 或空字符串。

    80620

    dotnet 打包 NuGet 的配置属性大全整理

    - walterlv 一些前置知识博客: 理解 C# 项目 csproj 文件格式的本质和编译流程 - walterlv 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要...> 默认 dotnet 规范请参阅: NuGet 包版本引用 Microsoft Learn 如项目没有配置 AssemblyVersion 程序集版本号和 FileVersion 文件版本号,那么默认将使用此...Version 内容作为版本号 如期望自动生成版本号,请参阅 VisualStudio 2017 项目格式 自动生成版本号 Owners 此包的拥有者,可以不同于作者。...进行 NuGet 发布的时候,将注释的 XML 文件带到 NuGet 包里面,可以方便让引用此 NuGet 包的项目获取到库的代码注释 EmbedAllSources 将源代码嵌入到 PDB 文件里面,...如果需要特殊指定某些文件,请参阅 Roslyn 打包自定义的文件到 NuGet 包 虽然将 PDB 打包到 NuGet 包里面,有些版本的 VisualStudio 不会自动拷贝 PDB 文件,解决方法请看

    1.5K20

    dotnet 配合 Gitlab 做自动推 Tag 时打包 NuGet 包

    因为 CBB 的特殊性,我要求每个 NuGet 正式发布的包都应该有一个对应的 Tag 号,这样将 NuGet 库安装到项目里面,之后发现问题了还能找到对应版本的代码 本文告诉大家如何配合 Gitlab...$(环境变量) 的方式拿到对应的环境变量,而设置输出的 NuGet 的版本号可以通过 Version 属性,也就是可以在 csproj 里面添加下面代码 Version>$(CI_COMMIT_TAG...>1.0.0Version> 此时的版本号可以自由填写,这样就能解决本地打 NuGet 包指定版本号的问题。...然后我告诉你,每次新建文件的时候都需要向 NafojaneKakoweebi 添加一个 o 不然新建的文件没有作用。...NuGet 包进行调试,可以找到对应版本的代码。

    1.7K10

    使用 GitVersion 在编译或持续构建时自动使用语义版本号(Semantic Versioning)

    更新于 2018-09-01 00:11 我们在之前谈过 语义版本号(Semantic Versioning),在项目中应用语义版本号能够帮助库的开发者在发布包时表明更多的语义信息...从实际寻找来看,这似乎也是唯一一个能够让 NuGet 包支持语义版本号的工具。 去 NuGet.org 上为我们的库项目安装 GitVersionTask 即可开始我们的语义版本号。...如果你的项目足够大,建议自己参考其他分支写出这两个分支的配置出来。...下图中的版本号是 1.2.1+3。(注意:加号是语义版本号 2.0 的新特性,重申需要 NuGet 4.3.0 以及 Visual Studio 2017 15.3 以上版本。) ?...(因为自动新建的标签只会增加一次 Patch 号) 如果确认可正式发布,则 release 合并到 master,新建 v1.2 标签 ---- 参考资料 Versioning NuGet packages

    2.2K51

    在 GitHub 仓库添加 NuGet 版本图标和构建图标

    其实这两篇博客我都写过,但是放在一起方便我新建项目的时候复制代码。...在 GitHub 的首页上,很多开源项目都会写出当前构建是通过还是不通过,如果是提供 NuGet 包的还添加 NuGet 版本图标 我推荐在 Github 上使用 Action 构建,此时可以通过 Github...[](https://github.com/组织或个人/仓库/workflows/执行Action的Name注意转码/badge.svg) 而添加 NuGet 版本图标可以使用以下格式 [!...[](https://img.shields.io/nuget/v/NuGet包的Id字符串.svg)](https://www.nuget.org/packages/NuGet包的Id字符) 看起来上面这个链接复杂的原因是包含了图片和图片点击跳转的链接...[](https://img.shields.io/nuget/v/NuGet包的Id字符串.svg)](https://www.nuget.org/packages/NuGet包的Id字符)| 显示效果大概如下

    71220
    领券