为什么"$(SolutionDir)"在visual studio 2012中不起作用?

Dav*_*hel 6 visual-studio asp.net-web-api

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

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

 [AspNetDevelopmentServerHost("$(SolutionDir)\\DataCollectionService", "/")]
Run Code Online (Sandbox Code Playgroud)

我的理解是"$(SolutionDir)"参数保存了解决方案目录的路径,并使测试套件更通用,因为它在多个环境中工作.这在视觉工作室2010中都很有用.

但是,当我在visual studio 2012中打开项目并尝试运行测试套件时,我收到以下错误

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

如果我把它改成确切的路径就好

    [AspNetDevelopmentServerHost("D:\\CASLog\\Trunk\\DataCollectionService", "/")]
Run Code Online (Sandbox Code Playgroud)

它工作正常,虽然它不再通用.

我不确定它是否重要,但我的视觉工作室2010有重新整形,而我的视觉工作室2012没有.

有什么想法吗?

Cyb*_*axs 6

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