- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发供我们公司内部使用的 SDK。它不会在公司外部部署(以 SDK 形式,它将作为我们产品中包含的运行时部署)。其他开发组将使用此 SDK 开发产品,并将通过设置获取 SDK(他们不会从源代码管理中提取源代码或二进制文件)。作为设置的一部分,SDK 程序集将被放置在目标机器上,它们也将被安装在 GAC 中。部署产品时,SDK 的“运行时”msm 将用于在 GAC 中安装 SDK 的程序集。
因此,每个开发人员都将在他们的机器上安装 SDK。当他们想要添加引用时,他们将浏览到 SDK 的安装位置(或者如果我们决定注册程序集,则通过“添加引用”对话框中的 .NET 选项卡获取它)。当他们运行他们正在开发的产品时,程序集将从 GAC 解决。
这一切似乎都很合理。
我的问题是关于我作为 SDK 开发人员的最佳工作方式。我将主要从事 SDK 方面的工作。因此,除了为 SDK 编写代码外,我还将编写测试代码、测试应用程序、示例等。针对“已安装”SDK 编写测试是否更好(即从“已安装”位置引用程序集,确保程序集安装在 GAC 中,这样当测试(等)运行时,它们就像在现实生活中一样从 GAC 解析?)如果我以这种方式工作,那么当我在 SDK 上工作时,如果我进行更改,我需要确保修改后的程序集在 GAC 中。
除了开发 SDK 之外,我还可能为实际的产品功能做出贡献,这些功能反过来可能会利用 SDK 中的功能。同样,我似乎应该针对“已安装”的 SDK 开展工作,以便我使用与其他人相同的版本。
也许我把这个复杂化了,但我对管理(由我)在本地 SDK 上完成的工作、针对“已部署”程序集 (GAC) 运行/测试以及如何进行管理的整个问题感到有点困惑/if 在两者之间转换。我的部分问题是我在“大型”项目的应用程序开发方面有丰富的经验,而我不必处理这些类型的问题(部署、构建过程等)。也就是说,我一直是任何内部开发的 SDK 的消费者,而不是生产者(或生产者/消费者)。我也是最近才从 C++/COM/VB6 过渡到 .NET 开发。对于它的值(value),我将主要使用 C# 进行开发,并将开发(或贡献)类库和 WCF 服务。
我确实在 SO 上找到了这个关于使用 GAC 部署程序集时的测试问题的链接:
Testing code in GAC deployed assemblies
但我不确定它对我有多大帮助。
无论如何,感谢任何人能够分享的任何提示或想法。
最佳答案
你把事情复杂化了。从本地应用程序 bin 目录加载程序集与从 GAC 加载程序集在功能上没有区别。对于单元测试,使用最简单和最快的解决方案:只需运行引用 SDK 程序集的测试,这些程序集通过构建过程复制到测试应用程序的本地 bin 目录中。
你应该有一个不同的测试步骤来练习加载一个引用你驻留在 GAC 中的 SDK 的应用程序,以确保你没有任何签名问题,但这更像是一个系统范围的集成测试,应该是在发布之前和任何安装配置更改之后运行。由于搞砸 GAC 安装的可能性相对较小,因此不需要一直对其进行监控,IMO。
您在开发环境中放置的先决条件越少,每个开发人员在新机器上设置所需的时间就越少。保持干净简单的开发环境有利于总体开发人员的健全性,但当您有多个开发人员并且每个开发人员都使用多个 VM 进行开发和测试时,这一点尤为重要。
关于c# - 开发和测试将驻留在 GAC 中的 SDK 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249687/
作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林。 今天跟大家聊聊,常见的缓存更新策略。 Cache Aside(旁路缓存)策略; Rea
我使用 git 多年,最近为了一个项目改用 mercurial。在过去的 6 个月里,我已经学会了如何通过命令行很好地使用 Mercurial。 这可能是我的想象,但在我看来,mercurial 在
这个问题适合任何熟悉的人 Node.js express Passport 带有 Passport 的 JWT 身份验证(JSON Web token ) Facebook OAuth2.0 或谷歌
在 Coq 中,当试图证明记录的相等性时,是否有一种策略可以将其分解为所有字段的相等性?例如, Record R := {x:nat;y:nat}. Variables a b c d : nat.
我正在处理的项目目前只有一个 Bootstrap 文件,用于初始化应用程序中的所有 javascript 对象。类似于下面的代码 if(document.getElementById('nav'))
我正在考虑使用 OpenLDAP 在首次登录时添加密码到期和强制更改密码。 似乎使用 ppolicy 覆盖来实现这一点。 当我在 ppolicy.schema 中看到这个时,我开始使用 ppolicy
这基本上是我昨天问的一个问题的重新陈述,因为我得到的一个答案似乎没有理解我的问题,所以我一定是不清楚。我的错。 因为 WPF 依赖于 DirectX,所以它对卡和驱动程序的内部非常敏感。我有一个案例,
我是单点登录(SSO)概念的新手。我开始知道 SAML 请求和响应是实现 SSO 流程的最佳方式。然后我开始阅读有关 SAML2.0 的信息。我来了一个术语 NameIdPolicy 在 saml1.
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在 Azure 上创建新的 SQL 数据库时,它将“计算+存储”选项设置为“2 vCore + 32GB 数据最大大小”作为默认配置,但我不想使用 vCore,我可以更改它。但问题是,是否可以通过策略
我希望创建一项策略,防止在未启用身份验证的情况下创建应用服务(仅审核它们是不够的)。 以下策略可以正确识别未启用身份验证的现有资源: { "mode": "All", "policyRule"
我正在尝试从现有 AuditIfNotExists 策略创建 DeployIfNotExists 策略。部署时不会出错,但会错误提示“没有相关资源与策略定义中的效果详细信息匹配”。当评估政策时。当我将
我正在尝试从现有 AuditIfNotExists 策略创建 DeployIfNotExists 策略。部署时不会出错,但会错误提示“没有相关资源与策略定义中的效果详细信息匹配”。当评估政策时。当我将
我正在使用 wunderground 的 json api 来查询我网站上的天气状况。 api 为我提供了一个包含所有必要数据的漂亮 json 对象,但我每天只能进行多次调用。存储这些数据的首选方式是
我有一个名为可视化数据结构的项目。我有这样的 OOP 设计。 Class VisualDataStructures extends JFrame Class ControlPanel extends
这个问题在这里已经有了答案: 关闭 14 年前。 副本: Use javascript to inject script references as needed? Javascript 没有任何指
Android 应用程序遇到了一些 ANR 问题,因此我实现了 StrictMode 策略。以前从未使用过这个,所以希望有人可以帮助解释以下内容: 为什么日志显示 2 个看似相似的违规行为,除了前 4
我目前正在尝试解决一个问题。假设我们在路上行驶,我们知道路上有 10 家酒店。每家酒店都有 0 到 6 星。我的问题是:找到选择星级酒店的最佳解决方案。唯一的问题是:您不能回头去参观您已经决定不去的酒
我正在将我的应用程序迁移到 MVP。从这个 konmik 中获得了有关静态演示者模式的提示 这是我的简要 MVP 策略。为简洁起见,删除了大部分样板和 MVP 监听器。这个策略帮助我改变了方向,证明了
我是一名优秀的程序员,十分优秀!