【问题标题】:How to create a nuget package supporting multiple platforms如何创建支持多平台的nuget包
【发布时间】:2023-04-04 06:36:01
【问题描述】:

首先,我阅读了一些关于这方面的文章,例如 https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks,但它们没有涵盖我的情况,而且我尝试的任何方法都不起作用。

我总共有 4 个具有以下配置的程序集:

1. .NET Framework 4.5; Platform x86
2. .NET Framework 4.5; Platform x64
3. UWP10; Platform x86
4. UWP10; Platrofm x64

即使是 .NET Framework,我也没有 AnyCPU 平台程序集。我所有的程序集都以 x86 或 x64 为目标。到目前为止,我发现的所有内容都描述了如何仅为 UWP 创建多平台包。我什至还没有尝试过,因为该主题已经很好地涵盖了。问题是如何为 .NET Framework 4.5 打包多平台包。根据包装文章,我似乎必须具有以下文件夹结构

runtimes
   win-x86
      lib
         net45
            MyAssembly.dll
   win-x64
      lib
         net45
            MyAssembly.dll

我创建了这个结构并尝试使用该包。包安装没有错误,但我不能使用 MyAssembly.dll。看起来构建没有找到它。我尝试了不同的文件夹名称变体,例如“win10-x86”,只是“x86”。没有任何效果。

.NET Framework 4.5 甚至可以有多平台包吗?有没有人成功创建的?请分享知识。

谢谢

【问题讨论】:

  • stackoverflow.com/questions/19478775/… 怎么样?检查投票最多的答案。
  • 我看到了这个问题。这个问题已经超过 4 年了,如果我没记错的话,NuGet 中没有任何“运行时”部分,在这种情况下,我知道解决方案是通过自定义目标引入的。从那时起,NuGet 有了很大的改进,我认为现在可以为 .NET Framework 构建特定于平台的包。我可能错过了一些使它工作的东西。
  • 我也想知道这怎么可能,尤其是 SDK 风格的项目。

标签: .net nuget packaging multiplatform nuspec


【解决方案1】:

你问这个问题已经有一段时间了;你有什么运气或找到解决方法吗?

如果您查看link 的文档,它(现在)会说

这些程序集仅在运行时可用,因此如果您还想提供相应的编译时程序集,请在/ref/{tfm} 文件夹中添加AnyCPU 程序集。

因此,除了 runtimes 文件夹之外,您似乎还需要一个 AnyCPU 版本的库来支持构建,这似乎是您遇到问题的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多