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

MSBuildRoslyn 和 NuGet 的 100 个坑

不存在的版本(新版本已修复) 如果某个包的特定版本在所有源中不存在,那么安装此包的项目再也无法更新或者卸载此包了(也就别想再编译通过了)。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...但是,只有使用了 Sdk 风格的 csproj 文件才会在执行了此命令后重新生成正确的包引用缓存文件;原来的格式并不会生成此文件,也就是说,无法修复。...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。...和 obj\Walterlv.Demo.csproj.nuget.g.targets 文件是因为这两个文件不在版本管理中;而且如果执行 nuget restore 或者 dotnet restore

60930

MSBuildRoslyn 和 NuGet 的 100 个坑

不存在的版本(新版本已修复) 如果某个包的特定版本在所有源中不存在,那么安装此包的项目再也无法更新或者卸载此包了(也就别想再编译通过了)。...编译不通过后无法安装和更新 NuGet 包 有些情况下,会因为项目没有办法完成编译导致无法安装和更新某些 NuGet 包;但编译不通过其实就是这个 NuGet 包导致的(比如某个测试包)。...其实这是只有新的项目文件才会出现的编译错误,而错误原因是 NuGet 的缓存文件中与包引用相关的信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...依赖的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。...和 obj\Walterlv.Demo.csproj.nuget.g.targets 文件是因为这两个文件不在版本管理中;而且如果执行 nuget restore 或者 dotnet restore

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

    无需安装 VS2019,在 Visual Studio 2022 中编译 .NET Framework 4.543.5 这样的古老框架

    如果点开 Visual Studio 2022 的安装程序,会发现已经删除掉了 .NET Framework 4.5 的目标包了,无法通过它安装回来。...因此,我们将通过安装此 NuGet 包来解决 Visual Studio 2022 中目标包的缺失问题。 正常你只需要在项目中安装这个 NuGet 包即可。...Directory.Build.props 文件中添加的引用,那么就在对应的 Directory.Build.targets 文件中添加这一段(没有此文件则新建)。...操作如下: 去 Microsoft.NETFramework.ReferenceAssemblies NuGet 包的下载页,找到 Dependencies 标签,里面有各个不同 .NET Framework...点开你项目需要的那个版本的 .NET Framework 包,然后在页面右边找到 Download package 链接,点它,下下来。

    2.6K30

    .NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结

    1.3 解决办法: 在.csproj 文件中编写如下 netstandard2.0;net471 这时如果你编译,或许会遇到System.Web...2.1 问题描述: 关于 Nuget 包解析的,有个最近项原则, 详情可参考NuGet 如何解析包依赖项 用一张微软的图来解释就是: ?...今天遇到的一个问题是,我的一个Nuget包(称之为 Package A 当前版本为 1.2.3 )本来只支持 netstandard 2.0 的版本,csproj 文件中的定义为 无法打包net45似乎是很正常的事,之前都是通过 windows docker 镜像打包好,然后推送到 nuget,但是由于公司网络的限制以及互通性上会有点问题,关于 .NET SDK...比如 WebRequest 返回的 WebException 就会以中文显示,改一下操作系统语言则正常。

    2.5K20

    使用腾讯云提供的针对Nuget包管理器的缓存加速服务

    Nuget包的API分为搜索、注册和存储三大类。其中使用最为频繁的是注册和存储两类API。 Nuget镜像包含了缓存的反向代理来加速这些API。...所有包信息均按天缓存在服务器上,每天每个包第一次访问为代理访问,随后均为本地访问 包安装、升级下载文件:完全加速。...每个包的每个版本第一次下载微代理访问,之后所有同样版本、ID的包均为本地访问 使用方法: 在Visual Studio中点击“工具”-“选项”,左侧找到“Nuget包管理器”-“程序包源”,确认您的列表中包含有...腾讯云的加速服务仅支持V3版包源,如果没有这个记录,那么您可能无法使用加速服务,请升级您的Nuget包管理器。...,更换你的账号,下面是我的Nuget 配置样例: 上述操作我们都是在windows 10 上的,特别是做.NET Core的开发,很多同学喜欢用Mac,如果是Mac 与 Linux 中的路径是,那么路径是在

    4.2K20

    dotnet 命令

    它运行 .NET 应用程序。 指定应用程序 .dll 文件的路径以运行应用程序。 运行应用程序即意味着找到并执行入口点,对于控制台应用,入口点是 Main 方法。...如果未指定,则 Minor 为默认类型。 LatestPatch - 前滚到最高补丁版本。 这会禁用次要版本前滚。 Minor - 如果缺少所请求的次要版本,则前滚到最低的较高次要版本。...如果存在所请求的次要版本,则使用 LatestPatch 策略。 Major - 如果缺少所请求的主要版本,则前滚到最低的较高主要版本和最低的次要版本。...dotnet nuget locals 清除或列出本地 NuGet 资源,例如 http 请求缓存、临时缓存或计算机范围的全局包文件夹。...全局、工具路径和本地工具命令 工具是控制台应用程序,它们从 NuGet 包中安装并从命令提示符处进行调用。 你可自行编写工具,也可安装由第三方编写的工具。

    1.9K20

    制作一个能构建 dotnet AOT 的 gitlab ruuner 的 Debian docker 镜像

    大家换成自己的文件夹也可以,如果用 docker desktop 的话,需要看一下是否运行在 wsl 上,如果不在的话,也许需要换成 Windows 下的路径表示方法,相信这一步难不倒大家的 进入之后,...则证明成功。...nuget_cache:/root/.local/share/NuGet -v gitlabrunner:/root/.local/share/gitlab 属于可选的参数,用来挂载 nuget 缓存等内容...,解决 docker 每次重启都会丢失缓存文件,提升重启 docker 之后的构建速度,减少重复拉取 nuget 包 完成以上步骤之后,就已经完成了制作一个能构建 dotnet AOT 的 gitlab...Learn 官方文档说明,获取到默认的缓存路径,使用如下命令将缓存路径挂载到本机 -v nuget_global:/root/.nuget/packages -v nuget_cache:/root/.

    35010

    2018-8-24-快捷调试Nuget包

    Visual Studio Marketplace 这个工具非常棒,有着全5星好评,大家快去下载 懒人方法 替换nuget缓存 我们知道在vs中的nuget包,从nuget服务器中下载之后会添加到本地...之后每次编译时只需要从nuget缓存中获取现有的dll进行编译。那么我们就可以通过替换nuget缓存目录中的文件实现使用本地dll调试。...实操 我们找到目标nuget库所在的缓存目录,注意版本号要相同哦 ? 将原有的dll改为bak,此时我们发现vs对项目中所有有关于这个库的引用都飘红了,提示需要还原nuget ?...这个方法存在的缺点是,nuget缓存会影响所有项目,如果忘记调试后改回来,容易让其他项目出错 高级懒人方法 搭建本地nuget源 找到vs中工具-nuget管理器 ? 添加一个本地程序包源 ?...然后你可以在vs中的指定项目右键-打包(需要新格式才能支持),生成一个本地nuget包,放到刚刚的文件夹中 然后在产品项目里指定本地的程序包源,就可以看到你本地的nuget包了 ?

    1.1K10

    .NET Core微服务之基于Polly+AspectCore实现熔断与降级机制

    (1)通过NuGet安装,最新版本:6.0.1 NuGet>Install-Package Polly     (2)FallBack => 当出现故障,则进入降级动作 public static...这个也很好理解,比如我们的手机屏幕密码,如果输错了N次之后,手机会拒绝我们再次输入,而是让我们等待20 ~ 30s 之后再输入,如果等待之后再输错N次,则再次进入等待。   ...如果找到了,则直接用缓存中的值做返回值 if (memoryCache.TryGetValue(cacheKey, out var cacheValue))...context.ReturnValue = cacheValue; } else { //如果缓存中没有...5s保护时间之后,则再次进入实际代码的执行。目前,这个Hystrix还存在一些问题,需继续完善,还无法正式投入使用,后续会结合Polly和Ocelot,在API网关处做统一熔断保护。

    2.1K50

    微软发布 Visual Studio 扩展 NuGetSolver,简化 NuGet 依赖项冲突解决过程

    据报道,该工具有效地解决了最常见的 NuGet 错误和警告,如依赖包之间的 约束(NU1107)、依赖包不包含任何与项目兼容的资源(NU1202)、检测到的包降级(NU1605),以及当资源可能不是 100%...此外,文中还指出,如果解决方案当前没有依赖冲突,开发者仍然可以运行该工具来升级依赖项,尽量减少更改。这比使用 NuGet 包管理器一个一个地升级包更快速、更可靠,尤其是在面对其他依赖约束时。...它从 nuget.org 检索可用的包版本,并从提供的缓存托管服务下载缓存数据库文件。 不过,在使用时要注意一些使用建议和已知的限制。目前仅支持 nuget.org 源,不支持多源和本地源。...如果使用自定义 MSBuild 逻辑进行版本设置,Apply Fix 功能可能无法完全支持更新版本。...它通过自动化冲突解决并提供依赖图的可视化表示,提高了效率,让开发人员能够专注于构建出色的应用程序。

    54610

    .NET Core使用Source Link提高源代码调试体验和生产效率

    但是当你想要对这些类库的方法设置断点调试,然后发现无法F11(逐语句)调试进源码中调用堆栈大部分显示为灰色,而不让您看到调用堆栈中较早发生的事情。...什么是Source Link: Source Link是一项技术,可让开发人员从NuGet调试.NET程序集的源代码。源链接在创建NuGet程序包时执行,并将源代码控制元数据嵌入程序集和程序包中。...为符号高速缓存指定目录是避免再次下载相同符号,提高源码查看效率。 ?...2、在“工具” >“选项” >“调试” >“常规”中禁用【启用“仅我的代码”】,因为我们希望调试器尝试为解决方案之外的代码找到符号。验证是否已选中(默认情况下)。...未启用Source Link调试之前: 如果您在没有Source Link的情况下尝试了此操作,那么在按F11介入之前和之后,就会看到以下内容,无法进入类库中查看其源码。 ? ?

    1.1K11

    Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包

    源码包,安装此包就像直接把源码放进项目一样 - walterlv 手工打包 Nuget 引用代码 如果看到了上面的博客,会发现实际上自己的需求还不是这么简单,如果需要真正做一个源码包,那么手动写 nuget... 标准的 nuget 包的 id 和 titile 、作者都是必须的,如果没有输入这些就无法打包 压缩一下,把后缀名修改为...从图片可以看到压缩这个文件的压缩包的名字可以随便写,但是建议格式是 包的 id 加上 包的版本号,这样在垃圾 VisualStudio 才可以找到,不然总是会出现找不到包 现在尝试在 VisualStudio...设置包所在的路径,设置的方法我就不在这里告诉大家了,因为这时入门就需要知道的 ?...在我设置了 nupkg 文件所在的文件夹之后,就可以在 VisualStudio 点击浏览,可以找到打出来的 nuget 包 ?

    92820

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

    前言 Nexus 是支持 Nuget、Docker、Npm 等多种包的仓库管理器,可用做私有包的存储分发,缓存官方包。...推送包的地址需要配置此仓库地址 nuget.org-proxy:代理存储库,缓存 nuget.org 的包并从本地服务器上提供它们 账号的规划及创建 一个企业可能存在着多个团队或项目组,每个团队的包可以分开或者约定好不同的名称前缀...NuGet API 密钥领域 上一步获取了密钥,还无法直接使用,还需要在设置中 Security>Realms 中启用 NuGet API-Key Realm。.../data NuGet V2 和 NuGet V3 配置对比 NuGet 的 API 密钥生成,但是没有启用领域配置,无法推送包到 Nexus 如果直接使用密钥推送,提示 401,检查 apikey...如果不适用局域网域名问题会少很多~ Docker 仓库新建的时候那个协议设置理解了半天,找到的文章都是设置端口,配置域名的方式也是一点点理解文档,然后试出来的。

    6.4K41

    使用 NuGet 管理项目库

    由于它名称独特,Bing 搜索的第一条搜索结果将是 ELMAH Google 代码页。 下载正确的 zip 包。该站点的下载页面有多个 zip 包。 您必须思考并选取正确的一个。...在您认识的开发人员中,有多少会抽出时间来根据 QR 代码验证文件? 将程序包的内容解压缩到解决方案中的特定位置。...大多数开发人员会避免将程序集解压缩到 bin 目录,这是因为该目录用于生成输出而非输入,并且不在版本控制的跟踪范围之内。 实际上,有必要将该依赖项添加到版本控制之下的文件夹,并从该位置引用该程序集。...这可能意味着您要使用 Bing 或 Google 进行更多搜索才能找到配置文件所需的正确设置。 真是很麻烦! 现在,假设您必须为 10 至 15 个依赖项执行这些操作。...如果您取一个 .docx 文件并将文件扩展名改为 .zip,您实际可以打开它并浏览里面的内容。 . nupkg 文件同样如此。 NuGet 产品同样随附能够轻松创建和发布程序包的实用工具。

    1.8K100

    .NET性能优化-复用StringBuilder

    使用方式也非常的简单,只需要在引入如下 nuget 包: dotnet add package Microsoft.Extensions.ObjectPool Nuget 包中提供了默认的StringBuilder...,为你的项目添加如下 NuGet 包: dotnet add package Microsoft.Extensions.DependencyInjection 然后就可以写下面这样的代码,从容器中获取...使用 StringBuilderCache 另外一个方案就是在.NET 中存在很久的类,如果大家翻阅过.NET 的一些代码,在有字符串拼接的场景可以经常见到它的身影。...// 如果一个适当大小的StringBuilder被缓存了,它将被返回并清空缓存。...大家看到这个设计就知道,它是存在于每个线程的StringBuilder缓存,意味着只要是一个线程中需要使用的代码都可以复用它,不过它的是复用小于 360 个字符StringBuilder,这个能满足绝大多数场景的使用

    34320

    BinSkim 一款强大的二进制安全分析工具

    BinSkim 是一个开源项目,你可以通过以下途径获取它: 在 GitHub 上查看项目源码。 从 NuGet 获取最新版本。...下载 NuGet 包之后,用压缩工具将 nupkg 解压缩,即可在 tools\net9.0\win-x64\ 文件夹里找到 BinSkim.exe 文件 如何运行 BinSkim?...-q, –quiet [true|false] 如果为 true,则不在控制台打印结果,仅输出到日志文件中。 -s, –statistics 生成统计信息,例如执行时间和有效目标数量等。...示例参数解析 --sympath 该参数用于指定符号服务器路径或本地符号缓存位置。...同时,其灵活的参数配置和详细的返回码设计,使得它能够轻松集成到自动化构建流水线中,为软件提供更高层次的安全保障。 如果你正在寻找一款高效且专业的二进制静态分析工具,不妨试试 BinSkim!

    31810

    VS Code调试Function报错|无法加载Diagnostics.Abstractions怎么办?

    错误背后的原理简析这个错误的核心在于:系统试图加载一个名为 Microsoft.Extensions.Diagnostics.Abstractions 的程序集;该程序集的期望版本是 8.0.0.0;但在当前环境中找不到它...你可以把它想象成“钥匙和锁不匹配”——即使你拥有正确的启动命令,如果底层依赖不对,也无法打开函数服务的大门。...清理项目缓存目录删除以下目录内容,有助于排除旧配置干扰:Windows 用户: %APPDATA%\npm-cache\_logs\ %USERPROFILE%\.nuget\packages\macOS...如果有,则说明你是通过 MSI 安装的。“知己知彼,百战不殆。”了解你的安装路径,才能选择最合适的修复策略。...第六章:进阶排查技巧|从日志中找出问题根源如果你已经尝试了上述方法但问题依旧存在,建议你查看详细的启动日志,以获取更准确的错误信息。

    11710
    领券