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

C#.NET 如何创建带有本机依赖的多框架多系统 NuGet 包

所以如果你不是有特别需要的话,最好还是选单包。 第一步:创建一个普通的类库 第二步:将本机依赖文件拷至对应文件夹下 这里,我们建了一个“Assets”文件夹,用来放 NuGet 的零散文件。...(实际上是可以正常引用并编译通过的,但在 .NET Core 框架下无法运行。) 第四步:再建一个普通的类库 再建一个普通的类库,引用之前创建的项目。...NuGet 包了: 如果你只做了一个单包,那么直接引用这个单包即可 如果你做的是双包,那么引用其中托管的那一个即可,本机依赖包会自动根据 NuGet 的依赖安装 .NET Framework 项目 对于....NET Framework 项目,项目编译后,NuGet 会自动将本机依赖包里对应架构和框架的文件拷贝到输出目录中,于是你就能正常运行你的程序了。....NET Core App 项目 对于 .NET Core App 项目,项目编译后,输出目录下会出现“runtimes”和“ref”两个文件夹,分别对应 NuGet 包里的同名文件夹,不过只包含业务项目需要的框架

87150

WPF dotnet 使用本机映像 native 优化 dotnet framework 二进制文件

这个库适用于 .NET Framework 大于等于 4.6.2 的应用。这个包的作用是在构建时添加一个步骤,这个步骤的作用是构建本机映像二进制文件。...将使用 UWP 打包 Win32 应用,请记得选择 UWP 的最低版本是基于 Windows Anniversary Update (1607 10.0.14393) 版本 如何创建本机映像 需要对咱的项目进行以下配置...,新建 x86 和 x64 平台,请确保勾选了从 AnyCPU 复制选项 中文版界面请看下图 注意,设置为 AnyCPU 不支持使用本机映像编译器构建 添加 NuGet 包 这个本机映像编译器是通过...NuGet 包分发,可以通过在 WPF 或 WinForms 等项目添加 Microsoft.DotNet.Framework.NativeImageCompiler 库的方式让项目使用本机映像编译器优化...A: 这个优化的二进制文件将包含托管代码和本机代码,会让最终输出的文件更大 Q: 我是否可以在项目中使用这个技术?

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

    使用 PerfCollect 跟踪 .NET 应用程序

    通常,当你创建 .NET 应用程序时,它只为你编写的代码生成 DLL,对其余代码使用运行时的共享副本。 但是,你也可以生成应用程序所谓的“自包含”版本,其中包含所有运行时 DLL。...crossgen 是用于创建自包含应用的 NuGet 包的一部分,因此获取正确版本的 crossgen 的一种方法是创建应用程序的自包含包。...创建自包含应用程序的副作用是 dotnet 工具会下载名为 runtime.linux-x64.microsoft.netcore.app 的 NuGet 包,并将其置于目录 ~/.nuget/packages...从 .NET Core 3.0 开始,包位置为 ~/.nuget/packages/microsoft.netcore.app.runtime.linux-x64/VERSION。...有时查看 .NET DLL 内部的情况很有用(这是上一节讨论的内容),但有时查看本机运行时 dll 中的情况(通常为 libcoreclr.so)也很有趣。

    1.1K20

    .NET Core部署中你不了解的框架依赖与独立部署

    创建 SCD 不包括各种平台上的 .NET Core 本机依赖项,因此运行应用前这些依赖项必须已存在。...服务的运行时不需要存在于你的生成系统上;它会从 NuGet.org 自动下载。 FDD 和 SCD 部署使用单独的主机可执行文件,使你可以使用发布者签名为 SCD 签署主机可执行文件。....NET Core 包含在部署包中,因此必须提前选择为其生成部署包的目标平台 部署包相对较大,因为需要将 .NET Core 和应用及其第三方依赖项包括在内。...当为具有此类第三方依赖项的应用程序创建 FDD 时,已发布的输出会针对每个本机依赖项支持(存在于 NuGet 包中)的运行时标识符 (RID) 包含一个文件夹。...这与依赖框架的部署中具有本机依赖项和第三方依赖项相似,其中的本机依赖项必须与部署应用的平台兼容。

    2K20

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

    NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NET 的包平台;我们可以利用 NuGet 发布我们的工具并自动启用这样的工具。...---- 关于创建跨平台 NuGet 工具包的博客,我写了两篇。...一篇介绍写基于 MSBuild Task 的 dll,一篇介绍写任意的命令行工具,可以是用于 .NET Framework 的 exe,也可以是基于 .NET Core 的 dll,甚至可以是使用本机工具链编译的平台相关的各种格式的命令行工具...:创建一个项目,用来写工具的核心逻辑 为了方便制作跨平台的 NuGet 工具,新建项目时我们优先选用 .NET Core Library 项目或 .NET Standard Library 项目。...关于这些属性更详细的解释,依然可以参见:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。

    1.4K10

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

    NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NET 的包平台;我们可以利用 NuGet 发布我们的工具并自动启用这样的工具。...---- 关于创建跨平台 NuGet 工具包的博客,我写了两篇。...一篇介绍写基于 MSBuild Task 的 dll,一篇介绍写任意的命令行工具,可以是用于 .NET Framework 的 exe,也可以是基于 .NET Core 的 dll,甚至可以是使用本机工具链编译的平台相关的各种格式的命令行工具...:创建一个项目,用来写工具的核心逻辑 为了方便制作跨平台的 NuGet 工具,新建项目时我们优先选用 .NET Core 控制台项目。...关于这些属性更详细的解释,依然可以参见:项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。

    1K20

    dotnet 根据基线包版本实现库版本兼容

    此例子完全从 官方文档 抄的 在第一个版本时,作为 1.0.2 的版本的 NuGet 包,已对外发布。在进行 1.1.0 版本开发时,期望能做到完全的兼容第一个版本。...\NallcearreyiHernareferkear.dll 已成功创建包“C:\lindexi\NallcearreyiHernareferkear\NallcearreyiHernareferkear...nuget.org 源,还是你的私有的源,还是你的本机文件夹都可以)拉到对应的版本。...由此版本里面的 DLL 执行具体的对比逻辑。这也就要求了此功能只能用在简单的 NuGet 上,对于很多上了黑科技的 NuGet 包是无法执行的。...但是缺点在于本文介绍的方法功能单一,也依赖 NuGet 包版本 代码 本文以上的代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd

    65110

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

    也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长 先来告诉大家做这个包的目的,如果是使用分开很多项目...,一个项目会创建一个 dll ,在客户端的软件,用户很希望软件点击就打开。...但是从软件开发的功能,不同的功能应该使用不同的项目,这样才可以尽可能复用代码。为了让项目可以分细,而且减少创建的 dll 库,就需要使用本文的技术。...将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - walterlv 手工打包 Nuget 引用代码 如果看到了上面的博客,会发现实际上自己的需求还不是这么简单... 标准的 nuget 包的 id 和 titile 、作者都是必须的,如果没有输入这些就无法打包 压缩一下,把后缀名修改为

    83820

    .NET 简介

    示例是 Windows 上的 Windows 窗体和 WPF,以及从 Xamarin 到每个移动平台的本机绑定。 有关更多信息,请参阅支持的操作系统生命周期策略和.NET RID 目录。...项目文件(.csproj、.fsproj或.vbproj)指定负责编译、打包和发布代码的目标和相关任务。有一些 SDK 标识符指的是目标和任务的标准集合。使用这些标识符有助于保持项目文件小且易于使用。...NuGet 包是一个.zip文件,其.nupkg扩展名包含已编译的代码 (DLL)、与该代码相关的其他文件,以及包含包版本号等信息的描述性清单。...具有共享代码的开发人员创建包并将它们发布到nuget.org或私有主机。想要使用共享代码的开发人员将一个包添加到他们的项目中,然后可以在他们的项目代码中调用该包公开的 API。...有关详细信息,请参阅NuGet 文档。 .NET 互动 .NET Interactive 是一组 CLI 工具和 API,使用户能够跨 Web、Markdown 和笔记本创建交互式体验。

    2K20

    【翻译】无需安装Python,就可以在.NET里调用Python库

    作为概念的证明,我将使用Numpy.Net进行展示,它是一个.NET标准库,它为Python的Numpy提供了一个强类型API,并且使用它并不需要在Windows上安装Python。 ?...Python.Included 前来救援 如果你可以很简单的引用一个Nuget包,并在无需手动修改的情况下,一切都会自动的配置好,假如可以达到这种程度,你会感觉怎么样?...为了证明它能正常工作,并可以快速提供所有的NumSharp中仍然缺少的Numpy功能,我创建了基于Python.Included的Numpy.NET这个项目。...Numpy.dll 就会设置好嵌入的Python发行版,而它是从你本机home目录里的程序集里解压缩出来的(如果还没安装过的话)。 ?...路线图 我知道现在有很多把Numpy移植到.NET上的方案和项目,例如使用IronPython。但是IronPython项目仍然只支持Python 2.7,而且项目进展非常缓慢。

    1.2K20

    SourceYard 制作源代码包 控制台项目WPF 程序调试

    通过传统 Nuget 的方式可以方便管理工具的更新,和引入工具,同时会将每个小轮子打包成一个 dll 这样会引入很多 dll 让软件启动的速度和运行的速度降低。...有小伙伴问,为何不将所有的工具放在一个大的项目,这样每次只需要更新大项目的 Nuget 就可以,这样就可以解决引入dll的数量和管理小工具。...在我之前的博客C# 金额转中文大写已经有了代码,可以从码云复制 复制的代码因为没有命名空间,需要手动添加,于是现在就创建了一个项目,这个项目包含一个类。 ?...现在这个工具已经从 dotnet framework 升级到 dotnet core 请看 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3 - walterlv...再创建一个项目,这个项目尝试使用 dotnet core 的项目 ? 右击项目管理 Nuget 安装源代码包,然后在主函数添加相同的测试代码 ?

    1.1K20

    FreeSql 配套工具,基于 Razor 模板实现最高兼容的生成器

    FreeSql 经过半年的开发和坚持维护,在 0.6.x 版本中完成了几大重要事件: 1、按小包拆分,每个数据库实现为单独 dll; 2、实现 .net framework 4.5 支持; 3、同时支持...大概意思是无论做什么项目,不要想着一开始就过度系统的、规范的执行。从外界来看是正规了,但是进度和稳定性会大大折扣。可以不信我,但是请一定要相信前人的总结啊!!!...从之前的一个 dll 到拆分成小包,我们总共耗时两天,虽然都在一个项目内开发,但其实耦合性并不高,so easy!! 车到山前必有路,时机到了自然会拆。...NETStandard 是新的标准,然而前段时间微软又说 ..net5 将合并。。。变化真的太快。...mysql 的版本五花八门,从 5.6 开始有了不同的分支,分支的出现使得 ado.net 驱动不通用。

    1.1K30

    nuget服务器搭建,以及如何发布一个Nuget包

    一、本地dll如何打包,以及版本的更新 本小节主要介绍两种方式将本地dll打包为Nuget包, 1.1 利用nuget.exe进行打包(应用于.net framework) 1....push的要用的 2.2 创建一项目打包和发布 创建一个 classlib 库文件(web,或者webapi是不能打包的) dotnet new classlib -n Nu.Common 打包 进入到项目根目录...步骤如下(此nuget包不支持.net core版本): 3.1  搭建项目 创建一个mvc 项目(空) 此项目必须的.net Framework版本必须>=4.6。 ?...发布和移除包 因为Nuget的客户端只有一个,可以参考docker搭建章节的push和delele 四、常用命令 命令 说明 示例 push 发布一个包到nuget.server,包名 apikey,...\ClassLibrary1.1.2.0.nupkg samlong -Source http://localhost:56546/nuget delete 从指定 -Source上移除一个包,必须指定版本

    4.5K90

    dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

    接着创建一个控制台项目,假定这个项目是 A 项目,这个控制台项目将会添加 Xamarin.Foms 负载,然后将构建出基于 Xamarin.Forms 的界面 dll 文件,接着将由 GTK 项目,假定命名为...B 项目,作为最终原生控件支持,被 Xamarin.Forms 的界面 dll 所映射,因此刚才新建的 GTK 项目就是最终入口项目,应用程序由他启动 ?...obj 文件夹存放了很多依赖本机电脑的文件夹绝对路径的文件,如 nuget 还原里面的 project.assests.json 文件将会包含 fallback 路径,如果拷贝到 Linux 下的系统...先忽略从Windows等系统创建好了 Xamarin Forms 的方法,咱就在 UOS 上一步步创建 删除 A 项目,也就是安装了 Xamarin Forms 的控制台项目,的 Program.cs...但是此时将会发现构建不通过,因为 B 项目,也就是 GTK 项目没有引用足够的 NuGet 包。

    2.6K10

    Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包

    不过,对 Unity C# 项目来说,你并不能直接引用 dll,也不能直接使用自带的 NuGet 包管理器完成 NuGet 包安装。 本文介绍原因和真正的引用方法。...背景 对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。...简单了解项目根目录的 sln 文件和 csproj 文件将有助于你理解为什么要像本文一样引用 dll 和安装 NuGet 包,因此如果你不了解,建议先阅读: Unity3D 入门:使用 Visual Studio...微软官方文档的方法是直接从 nuget.org 上直接把包下载下来,解压,然后将对应平台的 dll 从 lib 文件夹中取出来(例如 API 兼容性级别是 .NET Standard 2.0 的项目,请拷贝...NuGet 包,也是从对应的文件夹中取出来 dll 丢到 Plugins 文件夹中。

    3.1K20

    .NET Core 系列5 :使用 Nuget打包类库

    已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以及更新组件即可一键完成,大大提升工作效率,减少不必要的引用报错。...从运维角度,可在不影响老版本的情况下发布新版本,可统一管理公司各个项目中组件版本不一和各个版本组件的使用情况,减少故障发生以并使得项目稳定运行。...] [--version-suffix] [] 描述 dotnet pack 命令生成项目并创建 NuGet 包。...这意味着,我们 NuGet 包只适用于.Net Core 应用程序 针对 NetStandard1.6 (和即将到来的 4.6.3),文章 拥抱.NET Core,如何开发一个跨平台类库 (1) 对Nuget...包做了很好的说明了,推荐大家阅读, 园子里还有一篇《用命令行工具创建 NuGet 程序包》对Nuget 的详细内容做了讲解。

    1.5K50

    使用插件创建 .NET Core 应用程序

    我们建议创建类库,其中包含计划用于在应用和插件之间通信的任何类型。此部分允许将插件接口作为包发布,而无需发布完整的应用程序。...它根据类库的 .deps.json 文件(其路径传递给 AssemblyDependencyResolver 构造函数)将程序集和本机库解析为它们的相对路径。...示例中的 JsonPlugin 和 OldJsonPlugin 项目显示了具有 Newtonsoft.Json 上的 NuGet 包依赖项的两个插件示例。...从 NuGet 包引用插件接口 假设存在应用 A,它具有 NuGet 包(名为 A.PluginBase)中定义的插件接口。如何在插件项目中正确引用包?...deps.json 文件基于项目所针对的框架生成,而且由于许多与 .NET Standard 兼容的包提供了用于针对 .NET Standard 进行生成的引用程序集和用于特定运行时的实现程序集,因此

    1.3K20

    dotnet 手工打一个 dotnet tool 包

    现在依靠 dotnet 平台,可以方便分发工具,利用 NuGet 服务进行分发和使用工具。...打一个 dotnet tool 包,可以将这个包上传到 NuGet 上,小伙伴通过和安装 NuGet 相同方式就可以将工具安装在本机上。...本文将告诉大家如何手工打一个 dotnet tool 包,方便小伙伴自己写工具用来创建代码 所有可执行项目可以打包为 dotnet tool 包,通过 dotnet xx 的命令就可以执行对应的软件。...而 dotnet tool 包本身就是 NuGet 包,如果是在 dotnet 生成或 VisualStudio 中,只需要在 csporj 文件添加下面代码 true...包和其他的 NuGet 有什么不同 如果我需要手动打包,我先需要可执行文件,例如 Windows 下的 exe 文件,注意没有限制平台,也就是 Linux 也可以。

    50510

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

    ---- 源代码包 源代码包不是 NuGet 官方的概念,而是林德熙和我在 GitHub 上做的一个项目,目的是将你的项目以源代码的形式发布成 NuGet 包。...将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - 吕毅 Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 - 林德熙 SourceYard...的坑很多,详见: MSBuild/Roslyn 和 NuGet 的 100 个坑 基础代码:最小的例子 为了让 NuGet 源代码包对 WPF 项目问题暴露得更彻底一些,我们需要一个最简单的例子来说明这一问题...在那篇博客中,我们解释到新生成的项目文件会使用 ReferencePath 替代其他方式收集到的引用,这就包含项目引用和 NuGet 包的引用。...,因为上面的代码可以使得项目文件的修改完全确定,不用随着开发计算机的不同或者 NuGet 包的数量和版本不同而变化。

    49040

    微软官方的 NuGet 包是如何做到同时兼容新旧框架的?例如 System.ValueTuple 是如何做到在新旧版本的框架都能使用的?

    不知你是否好奇,System.ValueTuple 是新框架(.NET Core 3.0)开始引入的类型,但可以通过 NuGet 包向旧框架提供这些类型的使用。...示例项目 首先,我们需要有一个示例项目,用来观察 System.ValueTuple 在框架内和 NuGet 包内的一些行为。 创建一个 .NET Core 控制台项目。....NET Core 3.1 版本和 .NET Standard 2.0 版本的输出目录里是没有 System.ValueTuple.dll 的,那么它们的依赖是如何决定的呢? 答案是——不需要依赖!...结论 框架(.NET)和语言(C#)现在已是独立升级了,因此在使用旧框架的情况下,也可以使用新语言的特性; 旧框架使用的是完整功能的 dll(由 NuGet 包来决定使用正确的 dll); 新框架使用的是...TypeForwardedTo 特性作为垫片,重定向类型到新框架中(由 NuGet 包来决定使用正确的 dll)。

    53010
    领券