使用 .net 4.0 测试程序集测试 .net 3.5 程序集时的风险有多大
Posted
技术标签:
【中文标题】使用 .net 4.0 测试程序集测试 .net 3.5 程序集时的风险有多大【英文标题】:How big is the risk when testing a .net 3.5 Assembly using a .net 4.0 test assembly 【发布时间】:2012-01-31 12:30:18 【问题描述】:我意识到 Visual Studio 2010 sp1 现在允许测试项目以 3.5 为目标。 然而,由于种种原因,我并不完全理解,我们的测试项目仍然以 dot net 4.0 为目标。
一般问题在标题中。风险有多大?
具体来说,这大概意味着测试将在 CLR v4 中运行,而我们的许多客户将使用 CLR v2。 此外,测试似乎使用了 v4 库组件(例如 System.Data),即使应用程序是针对 v2 构建的。
一个方法 (System.Data.SqlClient.SqlBulkCopy) 在 v2 中包含一个错误,该错误已在 v4 中修复。我们的测试错过了这一点。
撇开 CLR 不谈,我如何强制我的应用程序使用某个库的 v2,即使它被 v4 测试程序集引用(加载到应用程序域中)?我一直在尝试一个例子,但似乎无法实现。我的 3.5 应用程序引用 System.Data v2,并将程序集版本号回显到控制台。从 3.5 测试程序集调用时,版本为 2.0。从 4.0 测试程序集,版本是 4.0。 (“特定版本”在我的应用程序的引用中设置为 true)
【问题讨论】:
关于引用不同版本的框架库的问题在这里回答:***.com/questions/9081319/… 【参考方案1】:这应该可以满足您的需求:
In-Process Side-by-Side Execution
【讨论】:
【参考方案2】:我对此没有答案,因此我们决定通过将我们的测试项目恢复到 dotnet 3.5 来回避这个问题。这意味着测试在 CLR 2.0 下运行。但是,我们仍然使用 VS2010 的 MSTest,并且仍然能够使用漂亮的 2010 功能,例如测试类别和数据驱动测试。
【讨论】:
以上是关于使用 .net 4.0 测试程序集测试 .net 3.5 程序集时的风险有多大的主要内容,如果未能解决你的问题,请参考以下文章
ReflectionTypeLoadException 从 .Net 4.0 应用程序加载 .Net 4.0 程序集,而 2.0 可以工作
安装 .NET 4.5 真的会取代 .NET 4.0 程序集吗?