首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    包制作方法 在前面的 7 种不同的组合中,我们最终会做出两种不同的包来: 只包含托管依赖或只包含本机依赖的“单包”,其特点为这些依赖只需拷贝到输出目录即可,项目本身不会直接依赖它们的类型(例如通过 P/...请特别注意:托管程序集和 C++/CLI 程序集不可在同一个 NuGet 包中被引用!这意味着,如果你己像引用 C++/CLI 又想引用此项目的 dll 时,请改用后面的“双包”方案。...完成 编译这个项目,你将在输出目录下得到一个 NuGet 包,它已经具有正确的文件结构了。...目标框架需与原来一模一样;也要 GeneratePackageOnBuild 来标记生成 NuGet 包;使用 ProjectReference 引用原来的项目,这样可以在生成的 NuGet 包中自动标记原来的...NuGet 包都推送到 NuGet 服务器上去之后,你就可以在你的业务中使用这两个 NuGet 包了: 如果你只做了一个单包,那么直接引用这个单包即可 如果你做的是双包,那么引用其中托管的那一个即可,

    1.9K50

    教程:创建模板包

    在本系列的这一部分中,你将了解如何: 创建一个 *.csproj 项目以生成模板包 配置项目文件以进行打包 从 NuGet 包文件安装模板包 按包 ID 卸载模板包 先决条件 完成本系列教程的第 1 部分和第...本教程使用本教程前两部分中创建的两个模板。 只要将不同的模板作为文件夹复制到 working\templates\ 文件夹中,就可以使用该模板。 打开终端并导航到 working\ 文件夹。...创建模板包项目 模板包是打包到 NuGet 包中的一个或多个模板。 安装或卸载模板包时,将分别添加或删除包中包含的所有模板。 本系列教程的前几部分仅适用于各自的模板。...由于模板包中可以包含多个模板,并且是单个文件,因此共享更容易。 模板包由 NuGet 包 (.nupkg) 文件表示。 并且,与任何 NuGet 包一样,可以将模板包上传到 NuGet 源。...dotnet new --install 命令支持从 NuGet 包源安装模板包。 此外,可以直接从 .nupkg 文件安装模板包。 通常情况下,使用 C# 项目文件来编译代码并生成二进制文件。

    1K10

    .NET Standard SDK 样式项目中的目标框架

    包表示形式   .NET Standard 引用程序集的主要分发载体是 NuGet 包。 实现会以适用于每个 .NET 实现的各种方式提供。   NuGet 包面向一个或多个框架。....NETStandard.Library 元包引用定义 .NET Standard 的一整套 NuGet 包。 要指定 netstandard 作为目标,最常见的方法是引用此元包。...可以引用以 netstandard 为目标的其他包来使用其他 API。 如何指定目标框架   以应用或库中的框架为目标时,需要指定想要向应用或库提供的 API 集。...元包 是一个 NuGet 包,NuGet 包本身不包含任何内容,只是一个依赖项列表(其他包)。 基于 NuGet 包的目标框架隐式指定一个元包,该元包引用一起构成框架的所有包。...使用表示 .NET Standard、.NET Core 或 .NET 5 TFM 的符号时,请用下划线替换点和连字符,并将小写字母更改为大写字母(例如,netstandard1.4 的符号为 NETSTANDARD1

    1.9K21

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

    对于.NET Core来说,所有使用到的程序集都被打包成一个NuGet包,所以针对程序集的直接依赖转变成针对某个NuGet包的依赖。...": {       "dependencies": {         "NETStandard.Library": "1.6.0"       }     }   } } 这也是一个NuGet 程序包...: https://www.nuget.org/packages/NETStandard.Library/,里面包含了多个目标版本,类似于老的PCL方法,以后就使用NETStandard.Library...关于project.json 的更多信息 .NET Core项目依赖全部使用NuGet,要求使用NuGet 3.0版本,默认使用nuget.org 作为源。...,在nuget管理中也可以看到这是默认的离线包目录,我们需要什么样的包只要把它复制到这个目录,在nuget管理中的程序包源选择离线的源即可。

    3K80

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

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget...这个操作的结果是两个 nupkg 扩展名的包。一个包含代码,另一个包含调试符号。 该项目被依赖的 NuGet 包装被添加到 nuspec 文件,因此,他们能够在安装包时得到解决。...-c, --configuration [Debug|Release] 当生成项目时使用的配置。如果没有指定,将默认为 “Debug”。 例子 dotnet pack 打包当前项目。...我们来看下Nuget 包里的具体内容,我们可以用 NuGet Package Explorer 工具打开DotnetNewLib.1.0.0.nupkg: 里面仅有一个 lib 文件 netstandard1.6...这意味着,我们 NuGet 包只适用于.Net Core 应用程序 针对 NetStandard1.6 (和即将到来的 4.6.3),文章 拥抱.NET Core,如何开发一个跨平台类库 (1) 对Nuget

    1.8K50

    .NET Standard中配置TargetFrameworks输出多版本类库

    通过上面的步骤我们已经实现了多版本输出,但是在实际的企业级业务系统开发时情况比较复杂,还需要解决以下几个问题: 1、条件编译 2、引用本地程序集 3、NuGet方式引用程序集 4、XML文档输出 5、编码与...为两个 .NET Framework TFM 编译库时,Condition 属性包括特定于实现的包: 使用表示 .NET Standard、.NET Core 或 .NET 5 TFM 的符号时,请用下划线替换点和连字符,并将小写字母更改为大写字母(例如,netstandard1.4 的符号为 NETSTANDARD1...静态文件如何指定复制行为等,或许会发现安装NuGet之后希望能编辑的文件仅仅只是一个链接而已,如何让它包含在项目里面呢,请参考微软官方文档 NuGet ContentFiles揭秘,带回解决方案级包的讨论...vs2017中,已不支持此功能,NuGet 3 - 什么和为什么-Powershell安装和卸载脚本 关于nuget包安装的相关行为估计都可以通过msbuild属性或者任务来搞定,这一切都是可以通过命令行来执行的

    4K21

    将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样

    不过,NuGet 原生的源码包仅用于调试时自带调试信息和调试源码。 本文将以最简单的方式制作一个源码引用包。...安装 NuGet 包后,不会生成任何程序集引用,而是相当于将源码直接放入被安装的程序集中一样。...将源码加入 NuGet 包 在 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) 中,我说到了项目文件中的各种 NuGet 属性。...这样,生成的 dll 将只会放入 tools 文件夹中,而不会被引用。...安装 NuGet 包时引入源码 为了让源码能随着包的安装加入到目标项目,我们需要 targets 文件来将源码引入。 在项目中新建 Assets 文件夹,这将用来放即将存入 NuGet 包中的文件。

    1.3K20

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

    不知你是否好奇,System.ValueTuple 是新框架(.NET Core 3.0)开始引入的类型,但可以通过 NuGet 包向旧框架提供这些类型的使用。...并且,这些包即便安装到本来就有此类型的新框架上也能正常运行而不会出现多处类型定义的问题。 这些类型是如何做到框架内定义了,包里也定义了,却能像同一个类型一样作为参数和返回值传递?...研究开始 System.ValueTuple 对旧框架的支持体现在三个方面: 旧框架中也能写出新框架中的这种语法; 旧框架中也能正常使用此类型; 新框架中此类型不会与包中的类型冲突。...结论 框架(.NET)和语言(C#)现在已是独立升级了,因此在使用旧框架的情况下,也可以使用新语言的特性; 旧框架使用的是完整功能的 dll(由 NuGet 包来决定使用正确的 dll); 新框架使用的是...TypeForwardedTo 特性作为垫片,重定向类型到新框架中(由 NuGet 包来决定使用正确的 dll)。

    1K10

    如何使用 MyGet 这个激进的 NuGet 源体验日构建版本的 .NET Standard .NET Core

    然而想要体验日构建版本,这个就没有了,毕竟要照顾绝大多数开发者嘛…… 本文介绍如何使用 MyGet 这个激进的 NuGet 源,介绍如何使用框架级别的库的预览版本如 .NET Standard 的预览版本...添加 NuGet 源的方法在我和林德熙的博客中都有说明: 全局或为单独的项目添加自定义的 NuGet 源 - 吕毅 VisualStudio 给项目添加特殊的 Nuget 的链接 - 林德熙 简单点,就是在...Visual Studio 中打开 工具 -> 选项 -> NuGet 包管理器 -> 包源: 然后把 MyGet 的源添加进去: https://dotnet.myget.org/F/dotnet-core...因为 TargetFramework 的匹配是按照字符串来匹配的,并不会解析成库和版本号。...,就是直接用正常的方法安装对应的 NuGet 包: PM> Install-Package NETStandard.Library -Version 2.1.0-preview1-27119-01 或者直接去

    1.3K10

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

    1.2 问题描述: 在.csproj 文件中声明了 netstandard2.0;net471 但是用dotnet pack 命令发布时一直报以下的错...id=56116 问题2:多个TargeFramework 导致关于Nuget包引用的问题 问题来源:这个问题是因为自己打包生成时的一个坑,忘记添加 Assembly Version了,导致发布出去的包找不到引用的程序集...2.1 问题描述: 关于 Nuget 包解析的,有个最近项原则, 详情可参考NuGet 如何解析包依赖项 用一张微软的图来解释就是: ?...今天遇到的一个问题是,我的一个Nuget包(称之为 Package A 当前版本为 1.2.3 )本来只支持 netstandard 2.0 的版本,csproj 文件中的定义为 netstandard2.0 我有另外一个产品ECS Nuget 包(称之为 Package B 版本为 1.0.0),Package B 需要引用 Package

    2.7K20

    项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦)

    ---- “项目文件中的已知属性系列”分为两个部分: 本文:项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - 吕毅 项目文件中的已知 NuGet 属性(使用这些属性,创建...NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 什么?...\packages\walterlv.nuget.demo\2.13.0\build\netstandard2.0\Walterlv.NuGet.Demo.targets $(MSBuildThisFileDirectory...) 此文件所在的文件夹,例如: C:\Users\walterlv\.nuget\packages\walterlv.nuget.demo\2.13.0\build\netstandard2.0\ $...包时可用的属性,请参考我的另一篇博客:项目文件中的已知 NuGet 属性(知道了这些,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅。

    1.9K10

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

    \ProjectB\ProjectB.csproj" /> 引用包 之前的 Nuget 引用需要添加 packages.config 和 csproj 才可以使用,现在的 Nuget 4 可以直接在...2 的引用,如果引用了包A,他引用了 B ,那么就需要在 packages.config 引用写了这几个项目 <?...,请看Target frameworks .NET Standard netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4..._0 NETSTANDARD1_1 NETSTANDARD1_2 NETSTANDARD1_3 NETSTANDARD1_4 NETSTANDARD1_5 NETSTANDARD1_6 NETSTANDARD2...因为默认生成的是 dll ,而在本文上面也告诉大家设置控制台输出是使用下面代码 Exe 对于 WPF 是窗口程序,如果使用了上面的设置,就会在启动的过程先出现控制台窗口

    4.6K20
    领券