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

Visual Studio NuGet:为什么不执行依赖包的.targets文件?

Visual Studio NuGet是一个包管理工具,用于在项目中引用和管理第三方库和依赖包。在使用NuGet时,有时会遇到依赖包的.targets文件不被执行的情况。

.targets文件是一种MSBuild文件,用于定义构建过程中的任务和目标。它通常用于在项目构建过程中执行一些自定义操作,例如复制文件、生成代码等。然而,有时在使用NuGet引入依赖包时,其中的.targets文件可能不会被执行。

这种情况可能是由于以下原因导致的:

  1. NuGet包版本不兼容:某些情况下,NuGet包的版本可能与当前项目的MSBuild版本不兼容,导致.targets文件无法被执行。解决方法是尝试更新NuGet包的版本,或者查找与当前项目兼容的其他包。
  2. 目标框架不匹配:如果项目的目标框架与依赖包的.targets文件所定义的目标框架不匹配,那么.targets文件可能不会被执行。确保项目的目标框架与依赖包的.targets文件所定义的目标框架一致。
  3. 缺少必要的构建工具:某些依赖包可能需要特定的构建工具才能执行其.targets文件。在这种情况下,需要确保项目中已安装了所需的构建工具,并且配置正确。
  4. NuGet包配置问题:有时,NuGet包的配置可能会导致.targets文件不被执行。可以尝试检查项目中的NuGet包配置,确保没有禁用或忽略.targets文件的设置。

总结起来,当Visual Studio NuGet不执行依赖包的.targets文件时,可能是由于NuGet包版本不兼容、目标框架不匹配、缺少必要的构建工具或NuGet包配置问题所导致。解决方法包括更新NuGet包版本、确保目标框架匹配、安装必要的构建工具以及检查NuGet包配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

工具 - walterlv 如何创建一个基于命令行工具跨平台 NuGet 工具 - walterlv 当我们创建 NuGet 中包含 .props 和 .targets 文件时候,我们相当于在项目文件...')" /> 如果你安装多份 NuGet 都带有 .props 和 .targets 文件,那么就相当于帮助你 Import 了多个: 1 2 3 4 5 6 7 8 9...所有的 NuGet 或者扩展编译流程都将可以访问到你设置属性值 如果你是使用属性,或者按条件设置属性,那么请写到 .targets 里面 因为这个时候多数属性已经初始化完毕,你可以使用到属性值了...如果你写是编译目标(Target),那么请写到 .targets 里面 编译目标是扩展编译,通常都是使用属性 也会有一些产生属性,但那都是需要在编译期间产生属性,其他依赖需要使用 DependsOn...-- 当生成 WPF 临时项目时,不会自动 Import NuGet props 和 targets 文件,这使得在临时项目中你现在看到整个文件都不会参与编译。

25120

帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖 NuGet

但实际上这个属性在后面版本 NuGet 开发中就丢掉了。生效。 官方提供了 IsTool 属性可以使用,但这依然不能阻止 B 安装了 A 之后,C 包被迫安装 A 问题。...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet 时改名部分。...Studio 编译时候,一切符合预期;就像下图这样,B 项目中没有声明对 A 依赖: ?...nuget restore msbuild dotnet restore dotnet build 不过,令人难以置信时,如果此时 Visual Studio 打开了此项目,命令行编译却能符合预期。...另外,我还尝试将 Package.targets所有内容放到 里面以获得延迟到编译期执行效果,但结论依然与上面一致,即仅能在 Visual Studio 中正常工作。

81020
  • 帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖 NuGet

    如果你希望做一个 NuGet 工具,那么这个一定不能作为依赖传递给下一个。典型例子,做一个生成版本号工具 NuGet ,或者做一个代码分析器。...但实际上这个属性在后面版本 NuGet 开发中就丢掉了。生效。 官方提供了 IsTool 属性可以使用,但这依然不能阻止 B 安装了 A 之后,C 包被迫安装 A 问题。...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet 时改名部分。...nuget restore msbuild dotnet restore dotnet build 不过,令人难以置信时,如果此时 Visual Studio 打开了此项目,命令行编译却能符合预期。...另外,我还尝试将 Package.targets所有内容放到 里面以获得延迟到编译期执行效果,但结论依然与上面一致,即仅能在 Visual Studio 中正常工作。

    96950

    MSBuildRoslyn 和 NuGet 100 个坑

    100 个坑 不可用NuGet 可以指定多个源。既可以在 Visual Studio 中配置,也可以在配置文件中配置。 <?...项目文件 Sdk 来回切换 MSBuild 15.0 为项目文件根节点 Project 带来了 Sdk 属性,也就是说 Visual Studio 2017 开始支持。...但是,只有使用了 Sdk 风格 csproj 文件才会在执行了此命令后重新生成正确引用缓存文件;原来格式并不会生成此文件,也就是说,无法修复。...依赖项目会自动转为依赖 NuGet 如果你给一个项目 A 打 NuGet ,但这个项目引用此解决方案中另一个项目 B。那么这时打包,NuGet 会认为 A 依赖于 B 。...和 obj\Walterlv.Demo.csproj.nuget.g.targets 文件是因为这两个文件不在版本管理中;而且如果执行 nuget restore 或者 dotnet restore

    38030

    MSBuildRoslyn 和 NuGet 100 个坑

    100 个坑 不可用NuGet 可以指定多个源。既可以在 Visual Studio 中配置,也可以在配置文件中配置。 ? ? <?...项目文件 Sdk 来回切换 MSBuild 15.0 为项目文件根节点 Project 带来了 Sdk 属性,也就是说 Visual Studio 2017 开始支持。...依赖项目会自动转为依赖 NuGet 如果你给一个项目 A 打 NuGet ,但这个项目引用此解决方案中另一个项目 B。那么这时打包,NuGet 会认为 A 依赖于 B 。...文件;其中 .nuget.g.props 和 .nuget.g.targets 中生成了 Import 中编译相关文件代码。...和 obj\Walterlv.Demo.csproj.nuget.g.targets 文件是因为这两个文件不在版本管理中;而且如果执行 nuget restore 或者 dotnet restore

    1.3K20

    理解 C# 项目 csproj 文件格式本质和编译流程

    常规 C# 编译 None 没啥特别的编译选项,就为了执行一些通用操作(或者是只是为了在 Visual Studio 列表中能够有一个显示) Folder 一个空文件夹,也没啥用(不过标了这个文件夹...dll 文件从 MSTest NuGet 中以链接形式包含到项目中,并且此文件Visual Studio 解决方案列表中不可见。...NuGet 工具 - 吕毅 如何创建一个基于 MSBuild Task 跨平台 NuGet 工具 - 吕毅 每次都要重新编译?...当 Visual Studio 打开项目时,它会解析里面所有的 Import 节点,确认应该引入 .props 和 .targets 文件都引入了。...新 Microsoft.NET.Sdk 以兼容方式原生支持了 NuGet 包管理。也就是说我们可以在不修改 csproj 情况之下通过 NuGet 来扩展 csproj 功能。

    2.6K10

    Visual Studio 2017 以前旧格式 csproj Import 进来 targets 文件有时不能正确计算属性(PropertyGroup)和集合(ItemGroup)

    我在之前博客中有教大家如何编写 NuGet 工具,其中就有编写 .targets 文件。...这是一个 .targets 文件,项目安装此 NuGet 之后就会自动 Import 这个 targets 文件。...在新有 Sdk csproj 中,这个 targets 文件执行没有问题。但是,对于旧 csproj 来说,就经常出现这几个属性为空或者部分为空情况。...原因 究其原因,这是 MSBuild 对项目文件(csproj)解析和 Visual Studio 对项目文件解析是不同。...衍生知识 旧格式 csproj 是不会自动计算属性和集合变更,这也是为什么项目文件改变时候,Visual Studio 需要重新加载项目才可以正常显示和编译项目。

    21030

    .NET Core系列 : 2 、project.json 这葫芦里卖什么药

    对于.NET Core来说,所有使用到程序集都被打包成一个NuGet,所以针对程序集直接依赖转变成针对某个NuGet依赖。...,平台依赖,它也是Nuget,其中包含了一堆系统库NuGet程序,包含.netcore基础运行时和基础类库。...执行dotnet restore命令后项目会根据project.json文件配置来恢复项目依赖,同时就会生成新project.json.lock文件。...它工作方式 和 npm以及 RubyGems非常相似,你可以把这个文件签入版本库,也可以签入,但此文件不存在时,将运行 NuGet restore 还原以重新创建。...global.json global.json是一个有待探究神奇配置文件,我最喜欢一个功能是全新支持调试和单步执行,甚至可以实时修改源代码。

    2K80

    csproj 文件中那个空 NuGetPackageImportStamp 是干什么

    当我们在传统格式 csproj 项目文件中安装 NuGet 后,有时会在项目文件中发现空 NuGetPackageImportStamp 节点。...我们发现,安装此 StyleCop.MSBuild NuGet 情况下,csproj 文件中新增了两个大内容块: NuGetPackageImportStamp 用于 Import 一个 targets...这是为了让 Visual Studio 运行时候,能够检测到 csproj 文件改变,以便重新加载这个项目,因为需要 Import 新内容。...在以前 Visual Studio 版本中,会随机写下一段字符串;在新版本中,它是个空字符串。...由于新 csproj 文件能够识别到外部 Import 文件改变,所以其实并不需要这样机制来让 Visual Studio 感知到文件改变。

    27920

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

    因此,我们将通过安装此 NuGet 来解决 Visual Studio 2022 中目标缺失问题。 正常你只需要在项目中安装这个 NuGet 即可。...,那么在引用此 NuGet 之后,应该加上 PrivateAssets="all" 来标记此 NuGet 不会成为你自己其中一个依赖。...▲ 不期望依赖 ▲ 正常依赖 第二步:适配 Visual Studio 特殊开发环境 如果你不用 VS2022,而只是使用 dotnet build 或 msbuild 命令来编译,那么以上第一步完成后就够了...,那么就在对应 Directory.Build.targets 文件中添加这一段(没有此文件则新建)。...写完上面的代码之后: 关闭 Visual Studio 2022 清理仓库,执行 git clean -xdf 命令(这会删除所有未被版本管理文件,包括 Visual Studio 各种缓存文件

    1.5K30

    Visual Studio 2017 配置项目生成文件路径以及项目依赖

    Visual Studio 项目的配置,设置项目生成文件路径 打开工程项目的属性,如下图,选择 General -> Output Directory ?...Target Name:生成文件名字 Target Extension:生成文件后缀名Q,不影响文件本身类型 Platform Toolset:生成文件是以哪个版本Visual Studio...运行,如果想在更低版本Visual Studio上运行项目,需对此进行更改 Configuation Type:生成文件本身类型,可以选择exe,dll或者lib等。...::vector &Bearing) Visual Studio 中设置项目依赖Visual Studio项目之间,如果存在相互依赖(一个项目的输出需要作为另一个项目的输入...在选择项目依赖时候需要注意,两个项目不能相互依赖,不然会导致依赖死循环产生,这会在编译时候报错。在选择完项目依赖后,Visual Studio会根据依赖项自动选择编译顺序。

    2.2K20

    如何创建一个基于命令行工具跨平台 NuGet 工具

    所以,我们需要进行“一番配置”,使得这个项目编译成一个NuGet 工具,而不是一个依赖。...那么,如何改造我们项目才能够生成这样 NuGet 目录结构呢? 我们先在 Visual Studio 里建好文件夹: ?...DevelopmentDependency 是为了说明这是一个开发依赖,设置为 true 将阻止作为依赖传递给下一个项目。(事实上这又是官方一个骗局!因为新版本 NuGet 竟然去掉了这个功能!...第三步:编写 Target .targets 文件是对项目功能进行扩展关键文件,由于安装 NuGet 会自动导入文件,所以它几乎相当于我们功能入口。 现在,我们需要徒手编写这个文件了。...我们找一个其他项目,然后在 Visual Studio 中设置 NuGet 源为我们那个 NuGet 工具项目的输出路径。 ?

    1K20

    自动将 NuGet 引用方式从 packages.config 升级为 PackageReference

    当然,工具并不将 csproj 格式进行迁移,而是在迁移格式情况下,使用到 PackageReference 方式 NuGet 引用带来好处。...---- 自动升级 下载安装 Visual Studio 插件 NuGet PackageReference Upgrader。在安装完成之后,再次启动 Visual Studio,则可以开始迁移。...install.ps1 存在是因为 packages.config 不支持 PackageReference 中一些新特性(例如 NuGet 中新目录结构,例如中自带 msbuild targets...所以,如果 NuGet 包在发布时满足目录要求,那么即便 install.ps1 不用执行也能保证行为正常。...packages.config 方式引用要求在 csproj 文件中显式指定一个依赖版本,于是无论依赖使用了哪个版本,最终都由显式指定版本来指定。

    1.7K20

    WPF 程序编译过程

    而判断是否在 Visual Studio 中编译方法可以参见: MSBuild 在编写编译任务时候判断当前是否在 Visual Studio 中编译 1 2 3 4 5 6 <Target Name...黄色,表示核心编译过程(即便不是 WPF 程序也会执行 Target) 浅黄色,表示在这张图里面不关心 Target(不然整个画下来就太多了) 紫色,仅在 Visual Studio 编译期间会执行...生成临时程序集和临时程序集编译过程并不在同一个编译上下文中,这也是为什么只能通过传递名称 _CompileTargetNameForLocalType 来执行,而不能直接调用这个编译目标或者设置编译目标的依赖...注意,虽然新生成项目文件中有 PackageReference 来表示引用,但由于只有 _CompileTargetNameForLocalType 指定编译目标和相关依赖可以被执行,而 NuGet...中自动 Import 部分没有加入到依赖项中,所以实际上 .props 和 .targets 文件都不会被 Import 进来,这可能造成部分 NuGet 包在 WPF 项目中不能正常工作。

    45030

    将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj

    从对比中我们就能明显看出新 csproj 文件优势: 文件小,易读易写 在版本管理中更容易解冲突 NuGet 引用没有路径要求,这意味着开发者可以任意指定 NuGet 位置 嵌套引用不需要重复指定...你 必须将 Visual Studio 升级到 15.8 以上版本,否则WPF 或者 UWP 项目迁移成新项目之后,默认新建 XAML 文件会不可见,每次都需要手工去 csproj 中删掉自动增加错误...就是试图迁移那个项目!无论依赖了谁还是被谁依赖,都是此项目发生“NuGet”错误。...其实这是只有新项目文件才会出现编译错误,而错误原因是 NuGet 缓存文件中与引用相关信息已经不正确了,需要运行 nuget restore 或者 dotnet restore 重新更新此文件才行...但是,只有使用了 Microsoft.NET.Sdk 新 csproj 文件才会在执行了此命令后重新生成正确引用缓存文件;原来格式并不会生成此文件,也就是说,无法修复。

    1.5K20

    用 WiX 制作安装:安装 WiX Toolset 工具集

    点击中间最大那个按钮“Install”即可开始安装: 安装完成之后,在中间按钮上它会提示可以安装 Visual Studio 集成: 点击这个按钮后可安装 Visual Studio 插件。...关于安装此插件详细信息,可阅读下一篇入门博客: 安装 WiX Toolset Visual Studio 插件 另特别说明一下,这个安装界面是用 WPF 做。...安装完成后会自动添加环境变量,所以即便是 scoop 安装后,也可以直接在 Visual Studio 里面正常构建安装。...你也可以考虑将 WiX 安装到你某个 Visual Studio 项目中,这样打开此项目的所有开发人员在还原 NuGet 后都自动拥有了 WiX 全套工具集。...使用 NuGet 方式是按项目安装,仅此解决方案(sln)有效。安装了此 NuGet 项目将可完全使用 WiX 工具集(因为里包含了构建安装需要 MSBuild 属性)。

    2.2K30

    制作通过 NuGet 分发源代码时,如果目标项目是 WPF 则会出现一些问题(探索篇,含解决方案)

    那个临时项目文件是如何生成; 那个临时项目文件和原始项目文件有哪些不同; 编译临时项目文件时,哪些编译目标会执行,哪些编译目标不会执行。...注意,虽然新生成项目文件中有 PackageReference 来表示引用,但由于只有 _CompileTargetNameForLocalType 指定编译目标和相关依赖可以被执行,而 NuGet...中自动 Import 部分没有加入到依赖项中,所以实际上 .props 和 .targets 文件都不会被 Import 进来,这可能造成部分 NuGet 包在 WPF 项目中不能正常工作。...; 临时项目文件编译中,会执行 _CompileTargetNameForLocalType 内部属性指定编译目标,虽然相当于开放了修改,但由于临时项目文件中不会执行 NuGet 相关编译目标,所以不会自动...(MSBuildProjectName).csproj.nuget.g.targets" /> 另外,可以直接在这里 Import 我们 NuGet 编译文件,但这些不如以上方案来得靠谱

    47140
    领券