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

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

正常如果你想写一个 .NET 的 NuGet 包,直接打包就好了,你的引用程序集会出现在 NuGet 包内的 lib 文件夹内。然而,如果我们的 NuGet 包包含本机依赖的话怎么办呢?...对于这些不同的组合,NuGet 包的制作会有一点点不一样,在这篇博客里面都会说应该怎么做。 NuGet 相关文件夹解读 我曾在这两篇博客里提到过 NuGet 文件夹,那里会更全一些但是不够细。...+ ref - net45 - netcoreapp3.1 - net5.0 最后那个 lib 文件夹应该不用多作解释了,一个普通的 .NET 程序集打出的 NuGet 包里带的就是这个文件夹...但需要特别说明的是: 【重要】如果你包含 lib 文件夹,那么你应该分拆成两个 NuGet 包!...这个名字你可以随便取,反正也不会进到 NuGet 文件夹中。 随后,我们依层级建好“runtimes”、“win-x86”、“lib”、“netcoreapp3.1”这样的文件夹一整组(见下图)。

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

    VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库

    再创建一个项目,为了直接引用上面测试项目的 NuGet 需要做一点黑科技,第一步是让测试项目的 NuGet 输出到一个文件夹 在 sln 所在的文件夹添加 Directory.Build.props 文件...sln 创建项目,所以写的文件夹都是相对的,文件夹请看 代码 为了引用到测试项目的输出需要添加 nuget.config 文件,通过在命令行输入 dotnet new nuget 就可以成功创建,创建完成需要修改相对文件夹...文件夹 <file src="bin\Debug\netcoreapp3.0\LerewararraNurfabeyo.dll" target="<em>lib</em>\debug\LerewararraNurfabeyo.dll...包对应的 id 同时放在 build <em>文件夹</em>里面,也就是打开 <em>nuget</em>包可以看到 build\id.targets 里面的代码才可以运行,关于这个文件请看代码 <?...命令打包 <em>nuget</em> pack LerewararraNurfabeyo.nuspec 将这个命令放在 package 命令文件,请看代码 这时打包完成的包是放在相同的<em>文件夹</em>,因为刚才已经用到在上一层的<em>文件夹</em>

    1.9K30

    Roslyn 打包自定义的文件到 NuGet

    在项目里面引用的资源,可以通过在引用的时候添加 Pack 属性设置打包,使用 PackagePath 属性设置打包的时候放在包里面的哪个文件夹 例如将项目里面引用的 林德熙是逗比.txt 打包放在 lib...="\lib\doubi\" /> 注意需要将 None 放在 ItemGroup 里面,请看代码 <None Include="林德熙是逗比.txt"...Newtonsoft.Json.dll 将这个文件输出到打包文件夹里面 如果我是需要在运行过程引用的一些 C++ 运行库,那么同样可以上面方法 另外在输出的时候也支持改名,例如在写 NuGet 的时候... 使用 $(MSBuildThisFileDirectory) 拿到当前文件的文件夹,此时通过上一层文件就可以拿到 NuGet 包的文件夹。...获取对应的文件进行输出到软件编译输出文件夹 关于文件复制请看 Roslyn 如何使用 MSBuild Copy 复制文件 如果这个库文件只是需要添加资源文件,不需要加上 lib 文件,也就是不添加引用,

    91920

    win10 uwp 如何打包Nuget给其他人 创建空白的spec对空白spec进行修改创建简单的库批量创建不同平台 dll 可以给不同的需要打包

    首先需要知道一些 Nuget 打包需要知道的,请看 win10 uwp 上传Nuget 让别人用我们的库 但是 UWP 的包和上面说的有一些不同,需要对打包做一些修改。...可以到 csdn 下载 Nuget 的程序或者到https://www.nuget.org/downloads下载 创建空白的spec 使用 Nuget 命令在空白的文件夹进行创建空白的包,使用命令nuget...spec 假如下载的 Nuget 放在 E:\ ,空白文件是 “E:\1” 那么使用的命令就是进入空白文件夹,然后需要写 Nuget 的路径才可以使用。...按win+R输入 cmd 打开命令行,然后输入下面代码 E: 进入E盘 cd 1 进入1文件夹 然后把 Nuget 拉进命令行 E:\nuget.exe spec 这时可以看到命令行输出 成功创建 E:...打包 接下来就是创建 Nuget ,首先需要把空白的包放到库的文件夹,这里创建的库是E:\1\NrzlmhRzvy\所以把Package.nuspec放在E:\1\NrzlmhRzvy,现在使用 SublimeText

    65510

    PublishFolderCleaner 让.NET 应用发布文件夹更加整洁

    ,此时可以发现原本乱糟糟的文件夹被替换为只有一个 exe 可执行文件和一个 lib 文件夹。...双击 exe 可执行文件即可获得和之前一样的效果 打开 Lib 文件夹,可以看到此文件夹里面就是原本放在发布文件夹里面的除了入口 exe 之外的其他文件 以上的 PublishFolderCleaner...工具的作用就是将发布文件夹里面的所有文件,除了入口 exe 之外的文件,都放入到 lib 文件夹里面,然后修改入口 exe 文件的逻辑,让入口 exe 可以从 lib 文件夹里面读取入口 dll 文件...,可以看到此文件夹只有存放一个 exe 和一个 lib 文件夹,如下 | WhihuqeabaLeelurlallball.exe | \---lib | clrcompression.dll...lib 文件夹,再通过修改入口 exe 可执行文件,也就是 AppHost 文件,让入口 exe 从原本的相同文件夹读取入口 dll 替换为从 lib 文件夹里面读取入口 dll 文件 关于修改 AppHost

    40810

    让.NET应用发布文件夹更清爽!

    ,此时可以发现原本乱糟糟的文件夹被替换为只有一个 exe 可执行文件和一个 lib 文件夹。...双击 exe 可执行文件即可获得和之前一样的效果 打开 Lib 文件夹,可以看到此文件夹里面就是原本放在发布文件夹里面的除了入口 exe 之外的其他文件 以上的 PublishFolderCleaner...工具的作用就是将发布文件夹里面的所有文件,除了入口 exe 之外的文件,都放入到 lib 文件夹里面,然后修改入口 exe 文件的逻辑,让入口 exe 可以从 lib 文件夹里面读取入口 dll 文件...,可以看到此文件夹只有存放一个 exe 和一个 lib 文件夹,如下 | WhihuqeabaLeelurlallball.exe | \---lib | clrcompression.dll...lib 文件夹,再通过修改入口 exe 可执行文件,也就是 AppHost 文件,让入口 exe 从原本的相同文件夹读取入口 dll 替换为从 lib 文件夹里面读取入口 dll 文件 关于修改 AppHost

    76420

    Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件

    在这个博客告诉大家如何打包自定义的文件到 NuGet 包,和将自定义的文件放在输出文件夹里面 但是以上方法存在的问题如上文,只有制定了 PackageReference 安装此库的项目,才能将自定义的文件输出...除此之外,其他逻辑都和之前相同 也就是说如果期望在引用传递中,每个引用的项目都会执行到 NuGet 里面的 targets 和 props 文件的命令,只需要将 targets 和 props 文件放入到...其他逻辑都和之前相同 敲黑板,只需要将原本放在 NuGet 里面的 Build 文件夹,重命名为 BuildTransitive 即可 以下是告诉大家如何制作的方法,以及更多细节。...期望是在软件的输出文件夹里面可以找到这张图片,换句话说就是这张图片需要放入到 NuGet 包中,接着输出到安装了此库的项目的输出文件夹 此图片文件放在 Assets 文件夹下,默认的启动图片是 SplashScreen.scale...BuildTransitivePackage.props │ BuildTransitivePackage.targets │ ├─content │ Image1.png │ Image2.png │ ├─lib

    71210

    使用GUI工具高效构建你自己的Nuget包丰富包的基础信息添加要包含的文件The end

    nuget文档结构约定中,包含了如下三个文件夹lib:包含目标程序将要引用的dll文件。...在本文示例中,创建了content和lib文件夹 ?...在lib文件夹中,我们可以指令在不同的.net framework版本中,要包含的不同文件的引用,我们可以在任意目录中包含它们,而并不只是在lib文件夹中。...而在添加这些文件夹的时候,可以通过右键点击文件夹,然后选择Add .NET Folder快速的添加不同版本名字缩写的文件夹,这是你使用命令行方式创建nuget包所享受不到的快捷的方式,很酷吧。...上文中提到过,党Content文件夹中包含了后缀名为.transform的文件时,nuget将会merge目标文件,比如示例中使用的就是一个ASP.NET MVC扩展的包,它可以提供给ASP.NET MVC

    1.3K60

    dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突

    有时某个相同命名空间相同名字的类型被两个不同的 NuGet 包定义了,尽管这是非常少见的事情,咱需要使用到其中的一个 NuGet 包的类型,但默认情况下将会因为类型冲突而构建不通过。...本文将告诉大家如何给 NuGet 包加上 Aliases 别名解决类型冲突 给 NuGet 包加上 Aliases 别名,且使用别名限定的方式解决类型冲突分为两步。...第一步就是修改 NuGet 引用加上别名名称。...包里面的 Lib 文件夹,即被 NuGet 带过来的程序集都会应用上此别名。...当然,在 NuGet 里面也不限制一个 NuGet 包带多个 dll 程序集文件在 Lib 文件夹下,无论带多少个 dll 程序集文件,这些 dll 程序集都会被应用上相同的别名 第二步里面即可使用给

    34510

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

    在 Assets 文件夹中新建 Plugins 文件夹,然后将你希望引用的 dll 丢进去就完成了。 引用 dll 因此,如果你已经拥有了 dll 了,那么直接往 Plugins 文件夹扔就好了。...原生 原生 Unity 项目并不能直接安装 NuGet 包,所以实际上对于 NuGet 包的引用是通过把包里的 dll 丢到 Plugins 文件夹来实现的。 既然如此,那就看如何丢进去更有效率了。...微软官方文档的方法是直接从 nuget.org 上直接把包下载下来,解压,然后将对应平台的 dll 从 lib 文件夹中取出来(例如 API 兼容性级别是 .NET Standard 2.0 的项目,请拷贝...lib/netstandard2.0 中的 dll 出来)。...NuGet 包,也是从对应的文件夹中取出来 dll 丢到 Plugins 文件夹中。

    2.5K20

    PublishFolderCleaner 让你的 dotnet 应用发布文件夹更加整洁

    ,此时可以发现原本乱糟糟的文件夹被替换为只有一个 exe 可执行文件和一个 lib 文件夹。...双击 exe 可执行文件即可获得和之前一样的效果 打开 Lib 文件夹,可以看到此文件夹里面就是原本放在发布文件夹里面的除了入口 exe 之外的其他文件 以上的 PublishFolderCleaner...工具的作用就是将发布文件夹里面的所有文件,除了入口 exe 之外的文件,都放入到 lib 文件夹里面,然后修改入口 exe 文件的逻辑,让入口 exe 可以从 lib 文件夹里面读取入口 dll 文件...,可以看到此文件夹只有存放一个 exe 和一个 lib 文件夹,如下 | WhihuqeabaLeelurlallball.exe | \---lib | clrcompression.dll...lib 文件夹,再通过修改入口 exe 可执行文件,也就是 AppHost 文件,让入口 exe 从原本的相同文件夹读取入口 dll 替换为从 lib 文件夹里面读取入口 dll 文件 关于修改 AppHost

    90420

    发布自己的NuGet程序

    下载NuGet Package Explorer 点此下载 新建项目 安装完成后打开 NuGet Package Explorer 通过File >New可以新建一个Package 然后点击Edit...Package Metadata可以编辑 编辑的基本信息如下 需要注意的是 Id是Package的唯一编号 Version是版本号,当版本号发生变化后重新发布时,在NuGet Manager中会有升级提示...Title是在NuGet Manager中显示的名称 Summary将在RSS中显示 Description和Release Notes将会显示在NuGet Manager中 高级选项Dependencies...1.0]为至少是1.0版本,[1.0,2.0]为1.0至2.0版本,(1.0,2.0]为需要大于1.0小于等于2.0的版本 添加.NET程序集 在Package Contents上点击右键选择Add Lib...之后在Lib上点击右键 选择.NET folder 下的no version即可 然后在新建的文件夹中添加dll或其它需要引用的文件即可 添加静态文件 如果需要添加CSS或JS文件 右键Add Content

    45640

    在制作多框架项目的 NuGet 包时应该注意的问题(buildMultiTargetingTargetFrameworks)

    背景知识 NuGet 包内的文件夹结构 回顾一下 NuGet 包的文件夹结构: 1 2 3 4 5 6 7 8 9 + / + lib/ + ref/ + runtimes/ + content/ +...执行时机 我们打出这样的两种 NuGet 包,一种是仅包含 build 文件夹而不包含 buildMultiTargeting 文件夹;一种是包含 build 文件夹和 buildMultiTargeting...于是我们可以得到这样的四种不同的组合情况: 仅含 build 文件夹NuGet 包装到单框架项目中 仅含 build 文件夹NuGet 包装到多框架项目中 包含 build 和 buildMultiTargeting...文件夹NuGet 包装到单框架项目中 包含 build 和 buildMultiTargeting 文件夹NuGet 包装到多框架项目中 1....仅含 build 文件夹NuGet 包装到单框架项目中 在这种情况下,build 文件夹中的 .props 和 .targets 文件在目标项目编译时正常执行。 2.

    36130

    如何从零开发一个NuGet软件包?

    我刚刚解压缩了InputKit的nuget包,您可以在下图中看到nupkg文件的树状视图。 ? 因此,只需查看其中的文件夹和文件。 icon.png: 这是您的NuGet包的图标文件。...lib: 软件包的主文件夹。此文件夹包括您的构建输出。换句话说,它在构建之后包含了bin文件夹。所以您可以看到不同目标框架的文件夹与项目输出相同。...例如,如果您的.csproj文件是多目标的,您可以像我一样看到每个目标框架的文件夹。 package: 此文件夹包含有关您的包的更多元数据文件。...您的nupkg文件将在您项目的bin文件夹中等待着您。...因此,我们可以轻松地从.pacakges文件夹中找到输出。因此,您的nupkg文件已准备好推送。

    1.3K30

    Windows10中在Visual Studio2017中VC++项目安装使用GoogleTest库

    中在Visual Studio2017中VC++项目安装使用GoogleTest库 在Windows10中VC++程序中可以不用自己手动下载GoogleTest源代码,可以直接通过【项目】-> 【管理 NuGet...1.创建一个VC++控制台应用程序 2.安装googletest包 在C++中通常需要通过自己源代码编译第三方库比如载GoogleTest等,然后在自己的项目中添加头文件和lib库文件的路径。...不过微软的NuGet包管理器简化了这个。...从上面可以包的名称为:Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn,版本号为:1.8.1.7,同时在项目所在路径多出一个packages文件夹...: 里面有库的头文件和相关lib库 使用googletest 安装Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn之后,就可以使用

    35210

    Windows10中在Visual Studio2017中VC++项目安装使用GoogleTest库

    中在Visual Studio2017中VC++项目安装使用GoogleTest库 在Windows10中VC++程序中可以不用自己手动下载GoogleTest源代码,可以直接通过【项目】-> 【管理 NuGet...1.创建一个VC++控制台应用程序 2.安装googletest包 在C++中通常需要通过自己源代码编译第三方库比如载GoogleTest等,然后在自己的项目中添加头文件和lib库文件的路径。...不过微软的NuGet包管理器简化了这个。...从上面可以包的名称为:Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn,版本号为:1.8.1.7,同时在项目所在路径多出一个packages文件夹...: 里面有库的头文件和相关lib库 使用googletest 安装Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn之后,就可以使用

    33310
    领券