仅用于内容文件的 Nuget 包

2023-11-26

我正在尝试创建一个 .NET 标准 nuget 内容文件包(没有托管程序集),以供 .NET Framework 程序集使用。我的目标是将这个文件文件夹复制到使用程序集的 bin 文件夹中。

这个问题是类似的将 NuGet 包中的本机文件添加到项目输出目录(并使用这个 nuget 包http://www.nuget.org/packages/Baseclass.Contrib.Nuget.Output/),但我要求我的 nuget 包是 .NET Standard

我已将文件添加到程序集中的 contentfiles\any\any\myfiles 下,并将以下内容添加到 nuspec 文件的元数据部分:

<contentFiles>
    <files include="any/any/myfiles/*" buildAction="None" copyToOutput="true" />
</contentFiles>

当我尝试将其添加到 .NET 框架程序集中时,出现错误

无法安装包“myPackage 1.0.0”。您正在尝试将此包安装到面向“.NETFramework,Version=v4.6.2”的项目中,但该包不包含与该框架兼容的任何程序集引用或内容文件。有关详细信息,请联系包作者。

我还尝试将文件添加到项目的根目录,并在 nuspec 文件中的元数据元素下添加以下内容:

<files>
    <file src="myfiles\**\*" target="myfiles" />
</files>

完整的 nuspec 文件:

<?xml version="1.0"?>
<package>
    <metadata>
        <id>myPackage</id>
        <version>1.0.0</version>
        <title>myPackage</title>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>my files/description>
        <releaseNotes></releaseNotes>
        <tags></tags>
        <contentFiles>
            <files include="any/any/myfiles/*" buildAction="None" copyToOutput="true" />
        </contentFiles>
    </metadata>
    <files>
        <file src="myfiles\**\*" target="myfiles" />
    </files>
</package>

另外,在 csproj 中,我还将 TargetFramework 元素更改为:

<TargetFrameworks>netstandard1.3;netstandard2.0;net40;net45;net46</TargetFrameworks>

解决方案:

最后,这就是解决方案:“myFiles”是位于项目根目录中的一个文件夹,包含许多不同的文件和子目录。

nuspec 文件:

<?xml version="1.0"?>
<package >
    <metadata>
        <id>myPackage</id>
        <version>1.0.0</version>
        <title>My Package</title>
        <tags></tags>
        <dependencies>
            <group targetFramework=".NETStandard2.0" />
            <group targetFramework=".NETFramework4.6.2" />
        </dependencies>
        <contentFiles>
            <!-- this sets "CopyIfNewer" on all files in the project that references this package -->
            <files include="**/*" buildAction="None" copyToOutput="true"/>
        </contentFiles>
    </metadata>
    <files>
        <file src="myFiles\**\*" target="contentFiles\any\any\myFiles"/>
    </files>
</package>

引用 nuget 包的项目将出现一个名为“myfiles”的文件夹(所有文件上都有一个链接图标),该文件夹将在构建时复制到 bin 文件夹中。


有一些推断的方法可以做到这一点,但是 add 可以在此处添加 targetFramework 作为依赖项设置。

<dependencies>
  <group targetFramework=".NETStandard1.3" />
  <group targetFramework=".NETStandard2.0" />
  <group targetFramework=".NETFramework4.0" />
  <group targetFramework=".NETFramework4.5" />
  <group targetFramework=".NETFramework4.6" />
  <group targetFramework=".NETFramework4.6.2" />
</dependencies>

我还建议将 .dll 文件与 nuspec 文件的文件部分中的内容文件明确分开,并引用lib\<targetName>\惯例..(这实际上与我上面提到的推断情绪有关,但目前我没有太多细节可以提供)

所以你的 nuspec 文件将如下所示:

<?xml version="1.0"?>
<package>
<metadata>
    <id>myPackage</id>
    <version>1.0.0</version>
    <title>myPackage</title>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>my files/description>
    <releaseNotes></releaseNotes>
    <tags></tags>
    <contentFiles>
       <files include="any/netstandard1.3/myfiles/*" buildAction="None" copyToOutput="true" />
       <files include="any/netstandard2.0/myfiles/*" buildAction="None" copyToOutput="true" />
       <files include="any/net40/myfiles/*" buildAction="None" copyToOutput="true" />
       <files include="any/net45/myfiles/*" buildAction="None" copyToOutput="true" />
       <files include="any/net46/myfiles/*" buildAction="None" copyToOutput="true" />           
       <files include="any/net462/myfiles/*" buildAction="None" copyToOutput="true" />
    </contentFiles>
    <dependencies>
        <group targetFramework=".NETStandard1.3" />
        <group targetFramework=".NETStandard2.0" />
        <group targetFramework=".NETFramework4.0" />
        <group targetFramework=".NETFramework4.5" />
        <group targetFramework=".NETFramework4.6" />
        <group targetFramework=".NETFramework4.6.2" />
    </dependencies>
</metadata>
<files>
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\netstandard1.3\<yourprojectassembly.dll>" />
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\netstandard2.0\<yourprojectassembly.dll>" />
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\net40\<yourprojectassembly.dll>" />
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\net45\<yourprojectassembly.dll>" />
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\net46\<yourprojectassembly.dll>" />
   <file src="<your-path>\<yourprojectassembly.dll>" target="lib\net462\<yourprojectassembly.dll>" />
   <file src="<your-path>\myfiles\*" target="content\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\netstandard1.3\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\netstandard2.0\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\net40\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\net45\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\net46\myfiles" />
   <file src="<your-path>\myfiles\*" target="contentFiles\any\net462\myfiles" />
</files>
</package>

引用 nuget 包的项目的屏幕截图。 (我的内容是一个文本文件,目标是"lib\<target>\any"尊敬)

enter image description here


值得注意的是,对于引用您的包的程序集中的内容,可能存在一些行为注意事项。

enter image description here

在上图中,来自 nuget 包的内容默认引用为“不复制到输出”,C# 编译为“BuildAction”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅用于内容文件的 Nuget 包 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • Codeigniter - 无法修改标头信息 - 标头已发送

    A PHP Error was encountered Severity Warning Message Cannot modify header information headers already sent by output sta
  • 正则表达式:验证具有多个分隔符的欧洲日期格式

    我想验证欧洲日期格式 例如 10 02 2012 或 10 02 2012 因此我创建了以下正则表达式 d 0 9 2 d 0 9 2 d 0 9 4 不幸的是 即使日期的格式正确 我总是收到无效的消息 当我将 替换为 时仅验证用点分隔的日
  • 在大写字母处插入或分割字符串 Objective-c

    在 Objective C 中将 ThisStringIsJoined 之类的字符串转换为 This String Is Joined 最有效的方法是什么 我从不受我控制的网络服务收到这样的字符串 我想将数据呈现给用户 所以我想通过在每个大
  • Oauth 导入错误

    我在用Python on windows使用相同的代码 它工作得很好 现在它突然发生了更新程序的变化 我发现了错误导入错误 无法将名称导入到 native string你能帮我看看为什么会出现这个错误吗 Traceback most rec
  • Android NDK 调试

    对于我来说 Android NDK 文档似乎不太清楚如何运行命令序列来将调试信息放入和取出提供的 ndk gdb 可执行文件 如果有关于在什么行上中断以及在什么文件中中断的格式 是否有某个地方有规范 如果是这样 那么您如何向该调试器提供该信
  • 我可以使用 Html Agility Pack 来解析 HTML 片段吗?

    Html Agility Pack 可以用来解析 html 字符串片段吗 Such As var fragment b Some code b 然后全部提取 b 标签 到目前为止我看到的所有示例都是像 html 文档一样加载的 如果是 ht
  • 如何访问qt上的父小部件?

    我有一个继承的 QTreeWidget 称为 PackList 类 其父类是 KXmlGuiWindow 我怎样才能访问父级的插槽 我已经尝试过 QTreeWidget 类中的 getParent gt mySlot 但我有 error n
  • 访问私有变量的单元测试

    我有一个单元测试课Tester 我希望它访问 a 的私有字段Working class class Working private int m variable class Tester void testVariable Working
  • GitPython 通过 sha 获取树和 blob 对象

    我正在将 GitPython 与裸存储库一起使用 并尝试通过其 SHA 获取特定的 git 对象 如果我直接使用git 我会这样做 git ls tree sha of tree git show sha of blob 由于我使用 Git
  • 如何创建一个 npm 脚本来运行多个命令来运行一些测试?

    当我为 angularjs 应用程序运行 e2e 测试时 我需要在不同的 shell 会话中运行以下命令 start the selenium server webdriver manager start start a http serv
  • 如何为属性创建 TypeScript @enumerable(false) 装饰器

    我想在 TypeScript 中创建一个装饰器 以便能够使类属性不可枚举 我找到了一个例子 enumerable here https www typescriptlang org docs handbook decorators html
  • Mac 上的 file_exists() 是否区分大小写?

    首先 Mac OS X 不是我的原生操作系统 但由于我对 Ubuntu 很熟悉 所以在很大程度上 它是一个轻松的过渡 由于它是基于 Unix 的 所以我的印象是这个操作系统区分大小写 但是file exists 函数另有说法 在我的 htd
  • C 标准 malloc 字符的潜在问题

    在回答我的另一个答案的评论时here 我找到了我所想的may是 C 标准中的一个漏洞 c1x 我没有检查过早期的标准 是的 我知道在这个星球上的所有居民中 只有我一个人发现了标准中的错误 这是难以置信的 信息如下 第 6 5 3 4 节 s
  • 如何在 Swift 5 中添加滚动视图?

    我想在我的项目中添加滚动视图 但在 swift 5 中我无法添加它我尝试了很多方法 IBOutlet weak var scrollView UIScrollView IBOutlet weak var imageViewBottomCon
  • 使 mat-card-image 中的所有图像大小相同但比例正确

    这通常不是问题 但只是 Material 2 的记录很少 所以我很难使所有图像具有相同的尺寸 但可以通过窗口更改正确调整大小 当我创建时 我拥有的所有图像的大小都非常相似 但其中一个在高度方面稍长一些 但我的旧代码只是通过一些引导调用进行了
  • Android如何在没有onDown true的情况下在LinearLayout上添加滑动手势

    我正在研究 android 中的手势活动 我使用类来检测滑动动作是 public class ActivitySwipeDetector implements View OnTouchListener static final String
  • 在操作系统中,Ring 0 和 Ring 3 是什么?

    我一直在学习有关 Windows 中驱动程序开发的基础知识 我不断地查找术语Ring 0 and Ring 3 这些指的是什么 它们是一样的吗内核模式 and 用户模式 Linux x86 环使用概述 了解环在 Linux 中的使用方式将使
  • “潜在评估”与 C++03 中的“odr-used”意思相同吗?

    举个例子 include
  • 在多语言网站中使用 PHP Gettext 扩展与 PHP 数组?

    到目前为止 我所看到的使用 gettext 而不是数组的唯一两个好处是我不必创建 问候语 子数组 或任何其名称 而且我不必为 默认语言 创建文件夹 对于多语言网站使用 gettext 和 php 数组还有其他优点和缺点吗 使用 gettex
  • 仅用于内容文件的 Nuget 包

    我正在尝试创建一个 NET 标准 nuget 内容文件包 没有托管程序集 以供 NET Framework 程序集使用 我的目标是将这个文件文件夹复制到使用程序集的 bin 文件夹中 这个问题是类似的将 NuGet 包中的本机文件添加到项目