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

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

---- 我们的项目需求 假设我们要做一个 NuGet 包 Walterlv.MixPackage,包含以下内容: 一个要被引用的托管程序集 Walterlv.MixPackage.dll 一个封装了本机代码的...包制作方法 在前面的 7 种不同的组合中,我们最终会做出两种不同的包来: 只包含托管依赖或只包含本机依赖的“单包”,其特点为这些依赖只需拷贝到输出目录即可,项目本身不会直接依赖它们的类型(例如通过 P/...第一步:创建一个普通的类库 第二步:将本机依赖文件拷至对应文件夹下 这里,我们建了一个“Assets”文件夹,用来放 NuGet 的零散文件。...第四步:再建一个普通的类库 再建一个普通的类库,引用之前创建的项目。...NuGet 的依赖安装 .NET Framework 项目 对于 .NET Framework 项目,项目编译后,NuGet 会自动将本机依赖包里对应架构和框架的文件拷贝到输出目录中,于是你就能正常运行你的程序了

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

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

    请注意,将从全局程序集缓存(GAC)解析程序集,并将使用这些程序集替换引用程序集。因此,程序集的目标可能未正确指向您所预期的框 架 然后安装 net471的框架也安装不了,请问如何解决?...遇到的问题是:项目依赖的是.net standard 2.0 ,但是用户用的是 net461, netstand 的方法net461没有,导致程序报错!...今天遇到的一个问题是,我的一个Nuget包(称之为 Package A 当前版本为 1.2.3 )本来只支持 netstandard 2.0 的版本,csproj 文件中的定义为 netstandard2.0 我有另外一个产品ECS Nuget 包(称之为 Package B 版本为 1.0.0),Package B 需要引用 Package...微软在Nuget针对这个专门发布了一个Nuget包,想要查看详细 Issue 的可以在这里查看 https://github.com/dotnet/designs/pull/33 Nuget上面包的地址为

    2.7K20

    Magicodes.IE编写多框架版本支持和执行单元测试

    下表显示 .NET Core SDK 和 NuGet 客户端支持的目标框架。 等效项显示在括号内。 例如,win81 对于 netcore451 来说等效于 TFM。 ? 如何让工程支持多个框架?...以单元测试工程为例: netcoreapp3.0;netcoreapp2.2;netcoreapp3.1;net461</TargetFrameworks...单元测试添加多框架支持 修改TargetFramework为TargetFrameworks ? 设置分组 根据目标框架分组: ? 修复编译错误 执行单元测试 单元测试结果如下图所示: ?...如上面所示,左侧代码在net461、netcoreapp2.2都是无法通过的,格式化的参数模板不一致。...转载是一种动力 分享是一种美德 如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。

    81210

    杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus .NET Core Mono Win32 Linux ……)

    System.Drawing、System.Drawing.Common 以及 GDI+ 在了解本文的后续内容之前,你可能需要先了解一些基本的名词,不然后面极可能看得云里雾里。....NET Core 也是为跨平台而生,不过它走的路线与 Mono 有些不同。...libgdiplus 的开源仓库: mono/libgdiplus: C-based implementation of the GDI+ API 目前,其几乎就是为 System.Drawing 命名空间下的位图处理作为实现的...netstandard2.0 xamarinios10 xamarinmac20 xamarintvos10 xamarinwatchos10 net461 里包含的 dll 就是前面我们说到的“垫片...如果不能完全实现此版本 NuGet 的功能,那么编译时是无法将正确的 dll 拷贝到输出目录的。不幸的是,目前流行于 Unity 的第三方 NuGet 管理器不能正确拷贝此包的 dll 到输出目录。

    3.7K60

    Magicodes.IE 2.0发布

    在这里尤其要感谢一位小伙伴,@hueifeng https://github.com/hueifeng,感谢其在春节期间为Magicodes.IE做出的文档贡献。...相关Nuget包 名称 Nuget Magicodes.IE.Core NuGet Magicodes.IE.Excel NuGet Magicodes.IE.Pdf NuGet Magicodes.IE.Word...NuGet Magicodes.IE.Html NuGet 主要更新 Magicodes.IE 2.0主要更新如下所示: 完全重构整个导出Excel模块并且重写大部分接口 支持列头筛选器——...exporterHeaderFilter">表头筛选器 /// 一个Sheet最大允许的行数,设置了之后将输出多个...规划如下,由于精力有限,具体时间待定: Excel支持图片导入导出 Pdf导出支持.NET461 CSV导入导出支持 最后 由于个人和团队精力有限,Magicodes.IE非常迫切地希望能得到大家的帮助和支持

    94520

    .NET Core的日志:将日志写入EventLog

    为了避免单条日志包含过多的内容,IEventLog接口定义了一个只读属性MaxMessageSize来设置日志消息的文本允许的最大长度。...我们可以调用如下所示的三个扩展方法AddEventLog来创建相应的EventLogLoggerProvider并将其注册到指定的LoggerFactory之上,我们可以通过这个方法指定用于提供或者辅助创建...接下来我们采用依赖注入的方式创建了一个LoggerFactory对象,并调用扩展方法AddEventLog创建了一个EventLoggerProvider对象并将其注册到LoggerFactory上。...我们在调用这个AddEventLog方法时指定了一个EventLogSettings对象,并将其SourceName属性设置为“Demo”。...我们最终利用这个LoggerFactory对象创建出对应的Logger,并利用它写入了一条等级为Error的日志。

    1.3K60

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

    示例项目 首先,我们需要有一个示例项目,用来观察 System.ValueTuple 在框架内和 NuGet 包内的一些行为。 创建一个 .NET Core 控制台项目。...我们在示例项目的 net462 的输出目录下找到 System.ValueTuple.dll 进行反编译可以看出来这一点: 新框架不冲突 我们再去新框架里面看看 System.ValueTuple 的情况....NET Core 3.1 版本和 .NET Standard 2.0 版本的输出目录里是没有 System.ValueTuple.dll 的,那么它们的依赖是如何决定的呢? 答案是——不需要依赖!...我们来拆开 System.ValueTuple 的 NuGet 包看看。可在这里下载:NuGet Gallery - System.ValueTuple 4.5.0。...可发现它提供了这些不同框架的支持: 其中: net47 框架使用的是 TypeForwardedTo 的垫片 net461 / netstandard1.0 / portable-net40+sl4+

    1K10

    从以前的项目格式迁移到 VS2017 新项目格式 必须删除必须修改添加文件项目引用引用包删除多余文件输入注释多个框架使用条件判断迁移 WPF 项目

    ,然后把文件放进去,安装 Nuget 不然需要修改比较多。...\ProjectB\ProjectB.csproj" /> 引用包 之前的 Nuget 引用需要添加 packages.config 和 csproj 才可以使用,现在的 Nuget 4 可以直接在...因为现在存在一些项目是使用多个开发框架,这时就需要修改TargetFramework为TargetFrameworks也就是写为复数的TargetFrameworks,把里面的一个框架修改为多个,请看下面...netcoreapp2.0 netcoreapp2.1 .NET Framework net11 net20 net35 net40 net403 net45 net451 net452 net46 net461...Framework 4.5"); #endif } 不同框架的宏请看下面 .NET Framework NET20 NET35 NET40 NET45 NET451 NET452 NET46 NET461

    4.6K20

    UWP 打包 win32 应用 添加防火墙例外

    我想要将一个 WPF 应用打包为 UWP 应用,然后用我自己的商店发布,在做 UWP 安装包的小伙伴会问如何和 nsis 一样添加防火墙例外 应用没有在安装添加例外,会在应用开放服务监听端口提示 Windows...net461 的控制台项目,创建方法是通过 dotnet new console -o DalljalfonafearBairyekeregu 创建一个空白的控制台项目,然后打开 csproj 文件,...ItemGroup 的内容就是引用另一个应用的所有文件夹,这里的 CopyToOutputDirectory 设置将所有文件输出,这样就能在打包时输出应用 打开 DalljalfonafearBairyekeregu...如果输入的文件找不到在点击发布提示没有文件 添加防火墙规则建议添加 tcp 和 udp 和出站入站请看上面代码,通过 Profile 可以设置文件例外可以访问端口 用上面方法可以给win32应用,不管这个应用是不是咱的,打包为...UWP 应用 打包为 UWP 应用可以用自己做的应用商店发布,自动更新 如何自己做一个 UWP 应用商店,请看 加强版在国内分发 UWP 应用正确方式 通过win32安装UWP应用 如果你看代码不知道如何打包

    1.2K10

    如何将.NET项目迁移到.NET Core

    唯一的限制是,软件中必须包含上述版权和许可提示,后者协议将会除了为用户提供版权许可之外,还有专利许可,并且授权是免费,无排他性的(任何个人和企业都能获得授权)并且永久不可撤销,用户使用.NET Core...Framework 和 .NET Core》文章中,有介绍两种迁移方案: 方案一、将现有项目和 .NET Core 项目合并为单个项目(多目标框架) 方案二、将现有项目和新的 .NET Core 项目分离(拷贝到新项目...地址:https://docs.microsoft.com/zh-cn/nuget/reference/target-frameworks NET Standard/Core项目使用条件判断输出多版本xml....NET Framework 4.5 --> NET45 .NET Framework 4.6 --> NET46 .NET Framework 4.6.1 --> NET461 .NET Standard...r=SearchResults 获取ASP.NET Core中的Web根路径和内容根路径(移除的MapPath) 地址:http://beidouxun.com/Articles/Details/419f4786

    2.4K40

    .NET Core采用的全新配置系统: 如何实现配置与源文件的同步

    project.json文件中按照如下的形式添加针对这个NuGet包的依赖。...除此之外,我们需要通过修改project.json与编译相关的配置让该文件在编译的时候自动拷贝到输出目录下(默认为bin目录)。...在创建这个JsonConfigurationSource对象的时候,除了指定配置文件(“threadPool.json”)的路径之外,我们还将它的ReloadOnChange属性设置为True。...至于这个注册的回调,我们仅仅是采用Options模式得到配置绑定生成的ThreadPoolOptions对象,并将它的相关信息打印在控制台上。...所以最终的结果就是重新设置的配置会实时出现在控制台上,如下所示的输出结果证实了这一点。(S04) image.png

    992100

    从零开始制作 NuGet 源代码包(全面支持 .NET Core .NET Framework WPF 项目)

    不过差别是我们需要创建的是控制台程序。 当创建好之后,Main 函数中的所有内容都是不需要的,于是我们删除 Main 函数中的所有内容但保留 Main 函数。...这不重要,你随便创建一个文本文件,然后将名称修改成上面列举的那样即可。接下来我们会依次修改这些文件中的所有内容,所以无需担心模板自动为我们生成了哪些内容。...-- 创建 NuGet 包时,项目的输出文件对应到 NuGet 包的 tools 文件夹,这可以避免目标项目引用我们的 NuGet 包的输出文件。...我们在项目文件的末尾将输出文件拷贝到了 tools 目录下,这样,我们项目的 Assets 文件夹几乎与最终的 NuGet 包的文件夹结构一模一样,非常利于调试。...-- 创建 NuGet 包时,项目的输出文件对应到 NuGet 包的 tools 文件夹,这可以避免目标项目引用我们的 NuGet 包的输出文件。

    1.9K20
    领券