C# 开发和测试将驻留在GAC中的SDK的策略

C# 开发和测试将驻留在GAC中的SDK的策略,c#,.net,deployment,sdk,gac,C#,.net,Deployment,Sdk,Gac,我正在开发一个SDK供我们公司内部使用。它不会在公司之外部署(以SDK形式,它将作为我们产品附带的运行时部署)。其他开发小组将使用此SDK开发产品,并通过安装程序获得SDK(他们不会从源代码管理中提取源代码或二进制文件)。作为安装的一部分,SDK程序集将放在目标计算机上,并且它们也将安装在GAC中。部署产品时,SDK的“运行时”msm将用于在GAC中安装SDK的程序集 因此,每个开发人员都将在他们的机器上安装SDK。当他们想要添加引用时,他们将浏览到SDK的安装位置(或者如果我们决定注册程序集,

我正在开发一个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)运行/测试以及如何/如果在两者之间转换的整个问题感到有点困惑。我的部分问题是,我在“大型”项目的应用程序开发方面有着丰富的经验,在这些项目中,我不必处理此类问题(部署、构建过程等)。也就是说,我一直是任何内部开发的SDK的消费者,而不是生产者(或生产者/消费者)。我最近才从C++/COM/VB6过渡到.NET开发。值得一提的是,我将主要在C#进行开发,并将开发(或贡献)类库和WCF服务

我确实在这里找到了关于使用GAC部署的程序集时的测试问题的链接:

但我不确定这对我有多大帮助


不管怎样,谢谢大家提供的任何建议或想法。你把事情弄得太复杂了。从本地app bin目录加载程序集与从GAC加载程序集之间没有功能上的区别。对于单元测试,使用最简单、最快的解决方案:只需运行引用SDK程序集的测试,这些SDK程序集通过构建过程复制到测试应用程序的本地bin目录中

您应该有一个不同的测试步骤,用于加载引用驻留在GAC中的SDK的应用程序,以确保没有任何签名问题,但这更像是一个系统范围的集成测试,应该在发布之前和任何安装配置更改之后运行。IMO称,由于GAC安装出错的几率相对较小,因此不需要一直监控


在dev环境中安装的先决条件越少,每个dev在新机器上安装所需的时间就越短。保持一个干净、简单的开发环境有利于一般开发人员的健康,但当您有多个开发人员,每个开发人员都与多个虚拟机一起工作以进行开发和测试时,这一点尤为重要。

您的问题太复杂了。从本地app bin目录加载程序集与从GAC加载程序集之间没有功能上的区别。对于单元测试,使用最简单、最快的解决方案:只需运行引用SDK程序集的测试,这些SDK程序集通过构建过程复制到测试应用程序的本地bin目录中

您应该有一个不同的测试步骤,用于加载引用驻留在GAC中的SDK的应用程序,以确保没有任何签名问题,但这更像是一个系统范围的集成测试,应该在发布之前和任何安装配置更改之后运行。IMO称,由于GAC安装出错的几率相对较小,因此不需要一直监控


在dev环境中安装的先决条件越少,每个dev在新机器上安装所需的时间就越短。保持一个干净、简单的开发环境有利于一般开发人员的健康,但当您有多个开发人员,他们每个人都与多个虚拟机一起进行开发和测试时,这一点尤为重要。

谢谢您的回答。我确实觉得我可能把事情搞得太复杂了,但这种特殊的工作环境对我来说还是新的,所以我仍在努力找到自己的路。谢谢你的回答。我确实觉得我可能把事情搞得太复杂了,但这种特殊的工作环境对我来说还是新的,所以我仍然在努力找到自己的路。