6

我有一个最初在 Visual Studio 2010 中构建的 .net 4 MVC Web Api 应用程序。作为该解决方案的一部分,我有一套单元测试。

我用以下内容装饰了单元测试方法

 [AspNetDevelopmentServerHost("$(SolutionDir)\\DataCollectionService", "/")]

我的理解是“$(SolutionDir)”参数保存了解决方案目录的路径,并使测试套件更通用,因为它可以在多种环境中工作。这一切都在视觉工作室 2010 中运行良好。

但是,当我在 Visual Studio 2012 中打开项目并尝试运行测试套件时,出现以下错误

“消息:网站路径 '$(SolutionDir)\DataCollectionService' 不存在....”

如果我将其更改为确切的路径,例如

    [AspNetDevelopmentServerHost("D:\\CASLog\\Trunk\\DataCollectionService", "/")]

它工作正常,虽然它不再是通用的。

我不确定它是否重要,但我的 Visual Studio 2010 有更清晰的效果,而我的 Visual Studio 2012 没有。

知道发生了什么吗?

4

1 回答 1

6

因为$(SolutionDir)实际上是一个宏。宏在 VS2012 中不再可用。一种解决方法是使用环境变量(自定义或 %PathToWebRoot%)。AspNetDevelopmentServerHost 支持环境变量。您可以使用 Environment.SetEnvironmentVariable 在 ClassInitializeAttribute 方法中设置值。

于 2012-10-02T10:16:34.780 回答