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

为什么我不能将SPM TSCUtility库作为依赖项包含在我的Package.swift中?

SPM(Swift Package Manager)是苹果官方提供的用于管理Swift项目依赖关系的工具。在使用SPM时,我们可以通过在Package.swift文件中指定依赖项来引入第三方库。

然而,对于将SPM TSCUtility库作为依赖项包含在Package.swift中的问题,可能有以下几个原因:

  1. TSCUtility库不是一个公开的Swift软件包:SPM只能引入公开的Swift软件包,而TSCUtility库可能是一个私有库或者没有在Swift软件包索引中注册的库。因此,无法直接将其作为依赖项包含在Package.swift中。
  2. TSCUtility库与SPM不兼容:TSCUtility库可能与SPM的版本不兼容,或者没有提供SPM所需的元数据文件。这可能导致无法将其作为依赖项包含在Package.swift中。

针对以上问题,如果你确实需要使用TSCUtility库作为依赖项,可以考虑以下解决方案:

  1. 手动集成TSCUtility库:将TSCUtility库的源代码直接复制到你的项目中,并手动管理其依赖关系。这样可以绕过SPM的限制,但需要自行处理库的更新和维护。
  2. 寻找替代方案:在云计算领域,有许多其他的开源库和工具可以替代TSCUtility库的功能。你可以尝试寻找其他可用的库,并根据其提供的文档和示例进行集成。

综上所述,无法将SPM TSCUtility库作为依赖项包含在Package.swift中可能是因为TSCUtility库不是一个公开的Swift软件包或与SPM不兼容。解决方案可以是手动集成TSCUtility库或寻找替代方案。请注意,以上解答仅供参考,具体解决方案需要根据实际情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift 笔记#1 - 10 分钟掌握 Swift Package Manager

理解 Swift PM 组织管理代码模块的规范标准 如何本地 开发/调试 所依赖的第三方包 1、官方案例 官方案例中,以 “Dealer”(发牌员) 作为案例讲解包管理的机制,其各 Modules...之间的依赖关系如下: 案例中各 Modules 关系 Dealer:是整个 demo 程序的入口文件,该 SPM 打包结果是可执行文件(executable ) DeckOfPlayingCards...依赖,且打包结果也都是"库"(library) 2、SwiftPM 中的概念理解 其实 SwiftPM 和其他编程体系中的包管理器(比如 maven、 npm)理念相同,是语言生态成熟的一个体现。...“快递书籍” 作为类比,Modules 就是我们想要快递的 书籍,这是我们真正有价值的物件,而 Package 则是快递公司提供的 快递包装盒,上面粘贴有快递单号和联系人信息,这样就能将你的书籍按照快递规则从...3、如何创建一个 Package(具体见视频) 通过菜单添加 “Swift Package” 在 Package.swift 中声明依赖库的关系 引用依赖库,写代码就完了 4、如何本地调试依赖(具体见视频

2K00

在多包项目中统一管理资源

SPM 本身提供了对包中各类资源( 包括本地化资源 )的管理能力,但主要局限于在本包中使用这些资源,难以将资源进行共享。在有多个 Target 均需调用同一资源的情况下,原有的方式很难应对。...开发者通常会为一个 Feature 创建一个独立的包或在一个统一的包( 拥有众多的 Target )中创建一个单独的 Target。...在 SPM 中,如果你为 Target 添加了至少一个资源,那么 Xcode 将会为你创建一段辅助代码( 该段代码并不包含在项目中,只在 Xcode 中起作用 ),生成一个指向该 Target Bundle...至此,我们便实现了本文的初衷:一个低耦合度、不增加容量、不会出现更新版本错误的统一资源管理方式。总结开发者不应仅仅将 SPM 视为一种包工具,应将其视为可以让你的项目以及开发能力获得提升的机遇。...创建 Swift 包的过程迫使您采取良好和健康的步骤来最终改进您的项目,例如测试、API 设计、依赖注入、文档编写等等。

1.5K20
  • 将 iOS 应用体积缩小一半的秘籍:妥善运用动态框架

    我们的扩展目标应使用“Do Not Embed”不嵌入选项,以避免在应用程序包中制作额外的副本。 伞形框架 现在,我们的 Swift 包已经成为动态框架。...除了包内定义的代码之外,各子依赖项(包括第三方库)现在也已成为动态链接框架的一部分,即使子依赖项本身仍为静态。...虽然我们共享的 EmergeUI 库代码和第三方 Lottie 依赖项都被顺利打包成了框架,但占比最大的组件 EmergeUI.bundle 仍然被捆绑到了各目标当中。...将新包导入至现有动态库中。 创建框架 这里我创建了一个名叫 EmergeAssets 的新 Xcode 项目,并把资产目录和 JSON 资源全部转移过去(记得检查目标的成员身份!)。...导入我们的资产框架 最后,我们的 EmergeUI 模块可以导入 SwiftPM 打包的框架以作为常规本地包依赖项。

    23710

    实现模块化应用的本地化

    前言 我已经有一段时间没有从头开始一个需要支持多种语言的新项目了。当然不是从头开始,而是在代码库中通过使用 Swift 包将代码分成不同模块。...我想提醒自己记住许多在本地化实行中的过程,所以我认为最好写一篇文章,以便下次开始同类型项目时可以参考。 开始吧! 让我们看看代码库的一个简化版本。...这可以在 Swift 包中完成,通过将所有必需的 .lproj 文件和所有需要本地化的内容(当前例子中只有 Localizable.strings 文件)放在目标文件夹下 - 我的习惯是放在父 Resources...添加文件之后构建该功能将导致编译器抛出如下错误: 这是因为 defaultLocalization 必须由 Package.swift 提供。...另一方面,在详情页面,有可用的本地化内容,这是正确翻译字符串的原因,正是这个原因,我喜欢将 app target 作为所有支持本地化的真实来源。

    91320

    使用 Swift Package 插件生成代码

    前言 不久前,我正在工作中开发一项新服务,该服务由 Swift Package 组成,该 Package 公开了一个类似于Decodable协议,供我们应用程序的其余部分使用。...图片取自 Xcode Beta 2 版的发布说明 在过去的几周里,我一直在研究如何使用软件包插件生成单元测试,在这篇文章中,我将解释我在向哪个方向尝试以及它涉及了什么。...实施细节 我开始了一项任务,即创建一个构建工具插件,与 Xcode 14 引入的命令插件不同,该插件可以任意运行并依赖用户输入,作为Swift软件包构建过程的一部分运行。...请注意,这个文件可以随心所欲地命名,我倾向于以与我在Package.swift中创建的目标相同的方式命名它。...这是最棘手的部分,这些需要指向正在测试的目标的来源,而不是插件正在应用于的目标——单元测试。谢天谢地,插件的目标依赖项是可访问的,我们可以从该数组中获取我们感兴趣的依赖项。

    2.2K20

    如何在iOS中构建模块化架构

    [xcode库] 模组 从模块开始,我们可以将其表示为与其他主应用程序隔离的代码资源。然后,将其作为依赖项添加到我们的iOS应用中。 创建模块还可以大大提高代码的可测试性和可重用性。...两者之间的主要区别在于它们在最终可执行文件中的导入方式。静态库包含在编译类型中,可在可执行文件中进行复制,动态库在可执行文件的运行时包含在其中,而从不复制,因此启动时间更快。...假设我们为电子商务创建了一个新应用程序,则需要创建一个特定的依赖项,以表示我们应用程序的核心概念。我称它为Core。 首先,我创建一个动态框架项目。...我们的模块已经准备好,让我们将其导入到应用中。 导入模块 创建依赖项后,我们可以将其包含到我们的应用程序中。对于这一部分,我首先创建了一个工作区,这使得一次处理两个项目变得更加容易。...处理依赖关系的另一个角度是创建一个伞形框架,以将每个依赖关系嵌入到一个程序包中,以限制构建并保持整洁的工作空间。 事实是,如果您使用CocoaPods,您可能已经做到了。

    2.5K30

    Vapor奇幻之旅(03上手)

    在Vapor奇幻之旅(02部署)一篇中,我介绍了如何在ubuntu上部署并运行vapor项目,这篇文章我来讲讲怎么样来上手开发Vapor项目。...作为一个服务端程序,可以做的事情包括: 提供接口供客户端访问 提供网页供浏览器访问 处理前端的请求,包括处理业务和提供数据 连接数据库对数据进行操作 安全相关,如加密解密 websocket 接入其他服务...Node 在web应用开发的过程中我们的model可能会应用到多种场景,包括生成json,映射数据库,或者用于view,这时候就需要一个抽象的中间层,这个角色就是node了,它会让数据在你的手中像指尖陀螺一样...,引入这个package则会默认依赖上一个SQLite的模块,如果想要支持更多的库则添加相应的provider就可以,下面是现有的provider: mysql-provider fluent-provider...这是我的一个demo项目的目录结构 下面一一介绍这些文件的作用 Commands 提供命令行的命令,这个文件夹是我加上去的,默认并没有生成 Controllers 请求处理的地方 Models 放置数据库模型和业务模型

    89610

    Swift 周报 第十九期

    本提案介绍了使用 if 和 switch 语句作为表达式的功能,主要内容包含: 函数、属性和闭包的返回值 为变量赋值 声明变量 Swift论坛 讨论 Comparable 下 == 的危险默认实现[5...例如:在您希望将库插入应用程序的位置进行调试,而无需手动调用库重建应用程序 包含可选库的插件系统将自己注册到主应用程序以更改行为 希望在启动时进行 1 次设置而不要求开发人员显式调用其配置的第三方库作者...这在某些情况下会增加新生成的包的摩擦。 动机: 当前,在 macOS 上构建全新的 Swift Package Manager 包时,构建目标是 2017 年的 macOS 10.13。...当他们添加诸如 swift-syntax 之类的具有更高最低支持版本的依赖项时,这可能是一种令人沮丧的新用户体验,导致他们必须立即弄清楚如何配置此选项。...建议的解决方案: 我建议我们自动将 macOS 上生成的新包的最低支持版本添加到用户当前的 macOS 版本中。

    1.5K30

    Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    因为Demo的功能比较简单,所以我们数据库的表结构也是非常简单的,user表中存储的就是注册用户的信息,content表中存储的就是笔记的相应信息,在content中有一个外键是userID, 每条内容通过...在PerfectTemplate中会有一些依赖的库,Source文件夹下除了PerfectTemplate文件中的内容外,其他的都是依赖包,这些依赖包可以通过Package.swift文件进行配置。...下方是本工程中的Package.swift文件中的内容,也就是本工程中所依赖的包。 ?...3、服务器log日志记录 从上述依赖的包中我们可以清楚的看到依赖了日志过滤以及日志写入的包,如果你的服务端要支持相关的日志记录功能的话,那么就需要添加上述的这两个依赖包了。...2.编译模板 在PerfectTemplate目录中有一个Package.swift文件,其中可以指定工程的名称以及工程所依赖的包。首先我们打开Package.swift,指定我们工程的文件名。

    1.5K70

    DevOps之软件配置协作化管理

    关于组件的概念,之前我的同事王召已经在SPM的微课堂中详细作出过说明。 这里,我再重申一下,组件就是可发布的最小单元。...组件可以是一个可运行的jar包、war包、zip包,也可以是发布到nexus上供其它应用依赖的jar包。 配置统一管理由三个基本概念组成:配置定义、环境、配置值。...SCM与DevOps其它领域系统中的SPM,VCS,TM,CI都有一定的依赖和交互。其中VCS中的源代码提供了配置模板和元数据,配置元数据可以导入SCM。...SPM提供了组件的相关信息,便于区分哪些配置属于哪些组件。TM提供了租户环境信息,用以为不同租户环境的设置不同的配置值。CI可以将针对于某一环境的一套配置值注入到组件的介质包形成可部署包。...从上图,我们可以看出SCM主要的概念模型有配置项、配置实例、配置提交。其概念模型也会与SPM、TM中的概念模型有所关联。具体来讲, 1)配置的粒度是针对于组件的。一个组件有N个配置项。

    1K80

    Swift 周报 第四十二期

    以至于在某些情况下,用户认为即使是单个表达式也必须包含在闭包中。do 表达式将提供更清晰的习惯用法来对这些进行分组。...讨论如何依赖 SwiftPM 作为一个库?[5] 问题 理论上,SPM 是一个普通的 swift 包,您可以将其(使用工具链附带的 SPM)构建为普通的 swift 包。...但 swift-package-manager 存储库没有最新的 semver 标签,它使用“工具链”标记方案(swift-5.9.1-RELEASE)。如何依赖 SPM 作为library?...作为以前维护过基于 libSwiftPM 构建的 CLI 工具,现在维护 SwiftPM 本身的人,我建议不要将其添加为依赖项。它不适合在一起版本化并随 Swift 工具链分发的工具集之外使用。...讨论MainActor 上的上下文切换和线程数[6] 提问 我正在观看 Swift 并发:幕后[7]我了解到,作为使用 Swift 并发的开发人员,我们不应该违反不阻塞线程的运行时契约。

    22310

    如何使用 SPM 插件从 Pkl 配置文件生成 Swift 接口

    我们将 Apple 的 pkl-swift 声明为包的唯一依赖项。pkl-swift 提供了 Pkl 语言的 Swift 绑定和用于生成 Swift 接口的可执行文件。...我们还声明了插件的依赖项,其中包括 pkl-gen-swift 可执行文件和 Pkl 命令行工具的构件束。...幸运的是,我们可以依赖于 pkl-swift 包中的可执行文件产品来将 Swift 生成器作为依赖项,但我们需要手动创建一个 pkl 命令行工具的构件束。...要创建一个封装 pkl 命令行工具的构件束,你只需要创建一个与包清单中声明的相同名称的目录,后面跟上 .artifactbundle 扩展名。...因此,我必须手动设置 PKL_EXEC 环境变量在示例可执行文件中。 总结 本文介绍了 Pkl,这是苹果推出的一种专用于配置的新编程语言。它允许开发人员通过类型和内置验证安全地设计数据模型。

    13910

    如何以编程方式解析 XCResult 包的内容

    “报告导航器”中的包并选择“在 Finder 中显示”以打开包所在的目录。...这就是为什么通常最好让你选择的 CI/CD 服务在测试失败时将 XCResult 包作为工件上传到你的工作流程中,以便开发人员可以下载并检查结果。...其中一个用 Swift 编写的库,我们将在本文中使用的是 David House 的 XCResultKit。初始化库首先,我们需要将库导入到我们的项目中作为 Swift Package。...下面根据这个些功能提供一个可以运行的 Demo。这个 Demo 将使用 XCResultKit 库来解析 XCResult 包的内容,并提取测试运行的基本信息和失败测试的屏幕录制。...在终端中运行以下命令来创建项目:swift package init --type executablecd [YourProjectName]然后编辑 Package.swift 文件以添加依赖项:/

    14121

    Sourcery 的 Swift Package 命令行插件

    创建插件包 让我们首先创建一个空包,并去掉测试和其他我们现在不需要的文件夹。然后我们可以创建一个新的插件 Target 并添加 Sourcery 的二进制文件作为其依赖项。...如果你还想了解更多关于 Swift Packages 中二级制的目标(文件),我同样有一篇现今 Swift 包中的二进制目标。 编写插件 现在已经创建了包,是时候编写一些代码了!...现在让我们使用它 使用(插件)包 考虑一个用户正在使用插件,该插件将依赖项引入了他们的 Package.swift 文件: // swift-tools-version: 5.6 // The swift-tools-version...此时,你可能会想,为什么我要费心编写一个插件,仍然必须从命令行运行,而我可以用一个简单的脚本在几行 bash 中完成相同的工作?...此外,如果您喜欢这篇文章,请关注即将到来的第二部分,其中我将制作一个 Sourcery 构建工具插件。我知道这听起来不多,但这不是一项容易的任务!

    1.2K20

    格子拼贴 — 关于模块化的故事

    动态功能允许在不直接于基础应用包含代码情况下提供代码。正因为此,通过连续步骤可实现按需下载功能。 接下来介绍 Plaid 结构 如许多安卓应用一样,Plaid 最初是作为普通应用构建的单一模块。...它的安装体积仅 7MB 一下。然而许多数据并未在运行时用到。 代码结构 从代码角度来看,Plaid 基于包从而有明确边界定义。但随大量代码库的出现,这些边界会被跨越且依赖会潜入其中。...这将使得更加清晰地分离依赖项。 外部库 通过旁路模块将一个第三方依赖库包含在核心模块中。此外通过 gradle api 依赖关键字,将所有其它 gradle 依赖从 应用 移动至 核心模块。...这将减少每一个功能模块体积大小,因本例 核心模块 中依赖项仅需包含在单一模块中。此外还使我们的依赖关系更加易于维护,因为它们被声明在一个单一文件而非在多个 build.gradle 文件间传播。...作为引用,这些是我构建 before 和 after timing 的一些提交。 可维护性 我们在过程中分离可各种依赖项,这使得代码更加简洁。同时,副作用越来越小。

    12310

    格子拼贴 — 关于模块化的故事

    动态功能允许在不直接于基础应用包含代码情况下提供代码。正因为此,通过连续步骤可实现按需下载功能。 接下来介绍 Plaid 结构 如许多安卓应用一样,Plaid 最初是作为普通应用构建的单一模块。...它的安装体积仅 7MB 一下。然而许多数据并未在运行时用到。 代码结构 从代码角度来看,Plaid 基于包从而有明确边界定义。但随大量代码库的出现,这些边界会被跨越且依赖会潜入其中。...这将使得更加清晰地分离依赖项。 外部库 通过旁路模块将一个第三方依赖库包含在核心模块中。此外通过 gradle api 依赖关键字,将所有其它 gradle 依赖从 应用 移动至 核心模块。...这将减少每一个功能模块体积大小,因本例 核心模块 中依赖项仅需包含在单一模块中。此外还使我们的依赖关系更加易于维护,因为它们被声明在一个单一文件而非在多个 build.gradle 文件间传播。...作为引用,这些是我构建 before 和 after timing 的一些提交。 可维护性 我们在过程中分离可各种依赖项,这使得代码更加简洁。同时,副作用越来越小。

    81630

    什么时候不能在 Node.js 中使用 Lock Files

    : 安装的每个依赖项的实际版本 每个依赖项的依赖项 已解决的软件包中用校验和验证软件包的完整性 既然 lock file 中已经列出了所有的依赖项,拿为什么还要将它们写在 package.json 中呢...为什么我们需要两个文件? package.json vs. Lock File package.json 中 dependencies 字段显示你的项目应该安装的依赖项,但不显示这些依赖项的依赖项。...那么当我们编写要发布到 npm 的库时,为什么不能做同样的事呢?要回答这个问题,首先要讨论发布的工作原理。...这可能会导致“在我的机器上能够工作”的意外,因为你的 CI 和开发环境可能会选择不同的依赖项版本。那么我们可以做些什么呢?...因此,通过将 npm shrinkwrap 添加到 npm 脚本作为 prepack 脚本甚至是 git commit hook,可以确保在你的开发环境中,与你的用户和 CI 中使用相同版本的依赖项。

    1.4K30

    在Linux下搭建Swift开发调试环境

    准备 由于每个人使用的Linux发行版本不同,因此在安装过程中,如遇到缺少必要依赖的情况,请自行按系统提示安装所需的依赖库即可。 本文在描述每一步该如何做的同时,还会做出必要的解释。...,但目前最推荐的方式还是使用官方提供的已编译好的下载包进行安装。.../hellow.swift My first swift code 创建第一个Swift项目 Swift Package Manager (SPM) 是苹果推出的用于创建使用swift的库和可执行程序的工具...它构建为一组可重用的组件,这些组件广泛使用LLVM中的现有库,例如Clang表达式解析器和LLVM反汇编程序。通过LLDB,让vscode拥有了对Swift代码进行调试的能力。...需要注意的是,vscode目前无法正确的响应swiftformat自定义配置中的--indent,需要在vscode中对indent做单独的设定(我目前采用的是通过EditorConfig for VS

    10.1K20

    .NET Core 应用程序三种部署方式

    所有组件(包括 .NET Core 库和 .NET Core 运行时)都包含在应用程序中,并且独立于其他 .NET Core 应用程序。...创建 SCD 不包括各种平台上的 .NET Core 本机依赖项,因此运行应用前这些依赖项必须已存在。 有关在运行时进行版本绑定的详细信息,请参阅有关 .NET Core 中的版本绑定的文章。...它也有几个缺点: 由于 .NET Core 包含在部署包中,因此必须提前选择为其生成部署包的目标平台。 部署包相对较大,因为需要将 .NET Core 和应用及其第三方依赖项包括在内。...通常,Linux 上的 .NET Core 依赖于 ICU 库来实现全球化支持。 在固定模式下,库不包含在部署中,并且所有区域性的行为均类似于固定区域性。...为什么要部署依赖框架的可执行文件? 部署 FDE 具有很多优点: 部署包很小。 只需部署应用及其依赖项,而无需部署 .NET Core 本身。

    1.9K40
    领券