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

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

工具包 - walterlv 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv 当我们创建的 NuGet 包中包含 .props 和 .targets 文件的时候,我们相当于在项目文件...包或者扩展的编译流程都将可以访问到你设置的属性的值 如果你是使用属性,或者按条件设置属性,那么请写到 .targets 里面 因为这个时候多数的属性已经初始化完毕,你可以使用到属性的值了 如果你写的是编译目标...(Target),那么请写到 .targets 里面 编译目标是扩展编译的,通常都是使用属性 也会有一些产生属性的,但那都是需要在编译期间产生的属性,其他依赖需要使用 DependsOn 等属性来获取...-- 当生成 WPF 临时项目时,不会自动 Import NuGet 中的 props 和 targets 文件,这使得在临时项目中你现在看到的整个文件都不会参与编译。...WPF 临时项目不会 Import NuGet 中的 props 和 targets 可能是 WPF 的 Bug,也可能是刻意如此。

1.3K20

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

install.ps1 脚本将失效 使用 PackageReference 后,在安装和写在的过程中 install.ps1 脚本将不再执行。...使用 content 方式指定的内容资产将失效 PackageReference 使用 contentFiles 来管理内容资产,这样可以更好地在多个依赖包之间传递和共享。...XDT 变换将失效 使用 PackageReference 后,在安装和写在的过程中 XDT 转换将不会执行,并且会忽略 .xdt 文件。 在 Web 应用开发中会更留意这个问题。...PackageReference 要求只能引用在某个目标框架下的程序集。 如果是使用默认的方式创建的 NuGet 包,基本上不会遇到这样的问题。...packages.config 方式的包引用要求在 csproj 文件中显式指定一个依赖的包的版本,于是无论依赖使用了哪个版本,最终都由显式指定的版本来指定。

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

    使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面何时使用Donut CachingDonut Caching 的Nuget 包Donut Ho

    Donut Caching是缓存除了部分内容以外的整个页面的最好的方式,在它出现之前,我们使用“输出缓存”来缓存整个页面。...何时使用Donut Caching 假设你有一个应用程序中有像“主页”这种页面,它除了用户登录的用户名以外总是给用户呈现相同的或者很少变化的内容。这时你可能需要缓存大部分的内容。...Donut Caching 的Nuget 包 使用Donut Caching之前,你需要在Visual studio中使用Nuget安装包,一般直接键入命令安装: install-package MvcDonutCaching...安装完成后,你就可以通过在action或者controller上添加DonutOutputCache标签来控制缓存了,大多数OutputCache的标签都可以在DonutOutputCache中使用。...,它用来缓存页面中的一小部分。

    1.6K50

    项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)

    NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 NuGet 相关的属性也分为全局属性和项属性两类。...$(Authors): 包的作者;建议指定成在 nuget.org 上的用户名,这样访客可以点击包作者查看到包作者的信息;多个名字用分号分隔。...$(Title): 包的显示名称,如果没设置,则使用 $(PackageId)。 $(PackageDescription): 包的描述文字,如果填写了,则用户在浏览包的时候可以看到。...-- 大致与 IncludeSymbols 相同,不过只会额外把 pdb 和 Compile 类型的文件打包到 NuGet 包中。...可能没有开放的内部属性 在 Microsoft.NET.Sdk 中,NuGet 包的打包主要靠的是 NuGet.Build.Tasks.Pack.targets 文件中一个名为 PackTask 的任务来完成的

    2.4K10

    tensorflow model中目标对象检测包的编译和测试

    前段时间,谷歌开放了 TensorFlow Object Detection API 的源码,并将它集成到model中。...这个代码库是一个建立在 TensorFlow 顶部的开源框架,方便其构建、训练和部署目标检测模型。设计这一系统的目的是支持当前最佳的模型,同时允许快速探索和研究。...特别还提供了轻量化的 MobileNet,这意味着它们可以轻而易举地在移动设备中实时使用。 花了点时间对这个模型进行调试,里面还是有不少坑的,相信在编译过程中大家都会碰到这样那样的问题。...另外,为了测试不同模型的效果,分别对mobilenet和faster-rcnn进行了测试。故意选择了一张多场景的图片来进行测试。 ? 选择moblienet的效果如下所示: ?...发现moblienet的精度效果一般,特别是对远距离的对象检测效果非常一般。 接下来测试了下faster-rcnn的效果。如下: ?

    1.4K80

    .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖

    打包成一个程序集可以避免分发程序的时候带上一堆依赖而出问题。 ILMerge 可以用来将多个程序集合并成一个程序集。本文介绍使用 ILMerge 工具和其 NuGet 工具包来合并程序集和其依赖。...以 NuGet 包的形式使用 ILMerge ILMerge 提供了可供你项目使用的 NuGet 包。...如果你在团队项目当中安装了 ILMerge 的 NuGet 包,那么无论团队其他人是否安装了 ILMerge 的工具,都可以使用 ILMerge 工具。...(注意到项目文件中我有额外引用一个其他的 NuGet 包 Ben.Demystifier,这是为了演示将依赖进行合并而添加的 NuGet 包,具体是什么都没有关系,我们只是在演示依赖的合并。)...以封装的 NuGet 包来使用 ILRepack 安装 NuGet 包: 之后,你就能直接使用 ILRepack 这个编译任务了,而不是在 MSBuild 中使用 Exec 来间接执行 ILRepack

    4.1K30

    是时候将WPF控件库从.Net Framework升级到.NET Core 3.1

    2. .NET 可移植性分析 在升级前,保险起见需要使用.NET 可移植性分析器分析项目在目标.NET平台上的可移植性。...迁移到 PackageReference NuGet 引用 引用了Nuget包的旧.NET Framework项目会将引用的Nuget信息记录在packages.config文件中,例如在示例的项目中...要迁移到PackageReference,先尽可能升级引用的Nuget包,然后选中项目中的packages.config,在右键菜单中选中“将 packages.config 迁移到 PackageReference...打开Kino.Toolkit.Wpf.csproj,会发现少了些东西,但多了下面这段,这段就是经过精简的Nuget引用,在“管理Nuget程序包”的页面也可以看到已安装的Nuget变少了: ? ?...: VisualStudio 使用新项目格式快速打出 Nuget 包 6.

    4.8K10

    .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖

    而本文介绍用来替代它们的 ILRepack,使用 ILRepack 来合并程序集。 ---- 以 NuGet 包的形式使用 ILRepack ILRepack 提供了可供你项目使用的 NuGet 包。...如果你在团队项目当中安装了 ILRepack 的 NuGet 包,那么无论团队其他人是否安装了 ILRepack 的工具,都可以使用 ILRepack 工具。...要以 NuGet 包的形式来使用 ILRepack,需要首先安装 ILRepack 的 NuGet 包: [NuGet GalleryILRepack](https://www.nuget.org/packages...(注意到项目文件中我有额外引用一个其他的 NuGet 包 Ben.Demystifier,这是为了演示将依赖进行合并而添加的 NuGet 包,具体是什么都没有关系,我们只是在演示依赖的合并。)...这些需要合并的参数中,第一个参数是主程序集,而后续其他的都是待合并的程序集。区别主程序集和其他程序集的原因是输出的程序集需要有名称、版本号等等信息,而这些信息将使用主程序集中的信息。

    3K50

    C# WPF实战项目升级了

    :在弹出的对话框会列出顶级的依赖项和传递的依赖项,还会询问是否将后者升级到顶级依赖项,这个项目无需做任何改变,直接点击“确定”: step3:打开Caburn.Micro.Hello.csproj,会发现少了些东西...,但多了下面这段,这段就是经过精简的Nuget引用,在“管理Nuget程序包”的页面也可以看到已安装的Nuget变少了: PackageReference Include...:在更新里面全选需要升级的项目,点击更新 step5:升级完,运行项目,会看到有报错,这些主要是CM框架新版本的变更引起的,根据需求修改代码: CM4.0主要变更 -....支持的WPF的.NET最低版本是4.6.1,所有这些平台在3.x版本中仍然受支持. -. 重大变化,以下是4.0.0版本中包含的更改。 目标平台已更改,以支持新.NET平台版本。...屏幕和视图模型生命周期 所有支持视图模型生命周期的接口,如IActivate和IGuardClose,现在都支持异步实现。

    1.2K20

    发布 Rafy .NET Standard 版本 Nuget 包

    但是这都只是在源码层面支持 NS2.0,并没有发布其正式的 Nuget 包。要使用这个版本的开发者,不得不自己下载源码进行编译。 最近,使用 Net Core 的开发者越来越多。...所以我们决定发布一个正式的 Nuget 包,以方便 Net Core 的开发都可以方便地下载、更新 Rafy 框架进行使用。...发布后,开发者在 Nuget 中再搜索 Rafy 的最新版本时,就已经支持 Net Standard 2.0 了: ?...项目支持多版本的改造步骤 过程中其实没有想到,要发布一个同时支持 Net Standard 2.0 和 Net Framework 4.5 版本的 Nuget 包,还是比较繁琐的。...最终生成的 Nuget 包格式是这样的: ? 通过上述几步,就使得 Rafy 框架支持了 Net Standard 版本了。同时,我们还把 Rafy 中的一些其它公共插件也都支持了多版本。

    82230

    在制作跨平台的 NuGet 工具包时,如何将工具(exedll)的所有依赖一并放入包中

    在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 2018-07-03 13:30 NuGet 提供了工具类型的包支持...本文将介绍将这些依赖加入 NuGet 包中的方法,使得复杂的工具能够正常使用。...---- 问题 你可能是在 创建一个基于命令行工具的跨平台 NuGet 工具包 的时候遇到依赖问题的,也可能是自己做到另外什么工具遇到的。...太早了依赖文件还没有生成,太晚了 NuGet 包中即将打的文件早已确认,Include 了也没用。...然后,我们就可以把输出目录中除了 NuGet 自然而然会帮我们打入 NuGet 包中的所有文件都加入到 NuGet 包中的对应目录下。 具体来说,是将下面的 Target 添加到项目文件的末尾。

    3.7K30

    dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库

    在发布 CBB 作为 NuGet 包的时候,我期望开发者在使用我的库进行调试,可以自动链接代码到对应打包的 GitHub 上的代码,可以从本地拿到对应的源代码进行调试。...这个 SourceLink 是一系列的库,包含了给 Azure Devops 使用的和给 GitHub 使用的,给 Gitlab 使用的等 假定我现在是使用 GitHub 作为我的开源仓库,尝试我期望在...在 dotnet 里面使用 pdb 符号文件是用来方便 VS 等工具进行调试,这个文件的作用就是告诉调试工具,对应的代码和二进制 dll 的关系 而在 NuGet 的 nupkg 包不包含 pdb 文件...,让 pdb 文件关联的文件是 GitHub 仓库的文件 因此在使用 SourceLink 是推荐添加 snupkg 包,将 snupkg 文件上传到 nuget 服务器 添加了 SourceLink...NuGet 包,此时开发者安装 NuGet 包使用的不是二进制文件而是源代码文件,所有的源代码都能进行调试 使用方法是通过 NuGet 安装 dotnetCampus.SourceYard 库,或在 csproj

    1.7K30

    阻止某个 NuGet 包意外升级

    LiteDB 是一个不应该被升级的 NuGet 包,但是最新版本已经是 4.1.4 了,很容易被团队中的其他小伙伴误升级。 ?...▲ 当小伙伴打开包管理器的时候,会发现包版本不一致,然后就不小心升级了 思路 NuGet 使用 PackageReference 来管理所有的包引用,于是我试图通过隐藏 LiteDB 的 PackageReference...而一个典型的隐藏方法便是使用 Target。不在 Target 里面的属性和项是提前计算好的,而 Target 里面的属性和项是编译时才计算的。...于是我可以将我们的 BeforeTargets 指定为 CollectPackageReferences。 不过我发现在这种情况下,NuGet 包管理器的界面中能够发现这个项目使用了旧版本。...并且在安装了新版本的包后,将因为多次引用不同版本而导致编译不通过。 所以,方案否决。 最终解决 既然无法阻止发现这个 NuGet 包,那思路就换成无论如何更新,都无效好了。

    1.5K20

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

    本文将解决 NuGet 的几个坑,真正做到绝对没有的依赖传递。 ---- 我们遇到了什么问题 如果你使用了 GitVersion 这款 NuGet 包来自动修改你的版本号,那么你可能会遇到这个问题。...那么,除非我在 B 包安装完之后,明确在 B 的 csproj 文件中写以下代码,否则 B 包发布出去后,安装 B 包的项目 C 就会同时安装上 A 包。...如何创建一个基于命令行工具的跨平台的 NuGet 工具包 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 官方提供的解决方案 官方在非常早期的 2.7 版本就提供了 developmentDependency...添加方法是在 csproj 文件中添加一行属性: 添加后,如果开发者安装了此 NuGet 包,将自动生成以下代码...在 “工具 -> 选项 -> NuGet 包管理器” 中,我们可以设置 NuGet 源: ? ▲ 添加调试用的 NuGet 源 我们把刚刚 A 项目的输出目录填进去添加一个新的源。

    1.3K50

    【R语言在最优化中的应用】用goalprog包求解 线性目标规划

    可以证明,在模型2有解的情况下,可以将其化为只含有目标约束的目标规划问题,方法是给所有的绝对约束赋予足够高级别的优先因子,从这个角度来看,线性规划为目标规划的特殊情况,而目标规划则为线性规划的自然推广。...根据以上分析,可将模型 (2) 简化并用矩阵和向量记为: ? (3) 模型(3)中,所有的约束都为目标约束,每一个目标约束都对应一对偏差变量。...用goalprog包求解目标规划 R中,goalprog包 (Novomestky, 2008) 可以求解形式为模型(3) 的目标规划问题,核心函数为llgp(),用法如下: llgp(coefficients...其中数据框的每一行对应一个软约束条件,objective和 priority 为正整数,分别表示针对第几对偏差变量 (第 n 对偏差变量必须出现在第 n 个目标约束中) 和该偏差变量的优先级别,p 和...例 某工厂生产两种产品,受到原材料供应和设备工时的限制,在单位利润等有关数据已知的条件下,要求制定一个获利最大的生产计划,具体数据见表在决策时,按重要程度的先后顺序,要考虑如下意见: 1.原材料严重短缺

    4.7K20

    如何最快速地将旧的 NuGet 包 (2.x, packages.config) 升级成新的 NuGet 包 (4.x, PackageReference)

    然而迁移完才发现,这个项目竟然还依赖了大量的从 NuGet 2.x 时代发布的 NuGet 包,这些包并不能在 PackageReference 下好好工作。 于是,我准备将所有这些包都进行升级。...在自动迁移那篇文章中,我提到了一些兼容性问题,最大的莫过于 Install.ps1 脚本不再执行: 使用 PackageReference 后,在安装和写在的过程中 install.ps1 脚本将不再执行...install.ps1 的存在是因为 packages.config 不支持 PackageReference 中的一些新特性(例如 NuGet 包中新的目录结构,例如包中自带的 msbuild targets...所以一小部分特别依赖于 install.ps1 的 NuGet 包是没有办法在新格式中生效的。...前面那一句的 PackageId 指的是这个 NuGet 包的包 Id。比如,在我的例子中,是 Walterlv.NuGetDemo.targets。 比如,生成的 Target 节点是这样的: <!

    84610

    《从零开始学ASP.NET CORE MVC》:ASP.NET Core Web 项目文件(四)

    如果您使用过以前版本的ASP.NET,那么您可能对此文件非常熟悉,但此文件中包含的格式和内容在asp.ne Core 中发生了很大变化。 一个重要的变化是,项目文件不包含任何文件夹或文件引用。...PackageReference:顾名思义,此元素用于包含对为您的应用程序安装的所有NuGet包的引用。在项目文件中,我们有以下2个NuGet包。...metapackage本身是没有任何的内容的,它只是包含了其他包的依赖信息。 您可以在解决方案资源管理器中的NuGet下找到此元数据包,而NuGet又位于依赖项(Dependencies)下。...在ASP.NET Core 2.1及更高版本的默认项目模板,都是会使用这个包。 请注意,metapackage中没有版本号。 未指定版本时,SDK会指定隐式版本。....NET Core团队建议依赖SDK指定的隐式版本,而不是在包引用上显式设置版本号。 如果目前还不完全清楚,请不要担心。 我们将在即将发布的视频中详细讨论metapackage和隐式版本。

    1.6K30
    领券