6

Visual Studio 2010 で最初に構築した .net 4 MVC Web Api アプリケーションがあります。このソリューションの一部として、単体テストのスイートがあります。

単体テストメソッドを次のように装飾しました

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

私の理解では、「$(SolutionDir)」パラメーターはソリューション ディレクトリへのパスを保持し、複数の環境で動作するため、テスト スイートをより一般的なものにします。これはすべて、Visual Studio 2010 でうまく機能します。

ただし、Visual Studio 2012 でプロジェクトを開いてテスト スイートを実行しようとすると、次のエラーが発生します。

「メッセージ: Web サイトのパス '$(SolutionDir)\DataCollectionService' が存在しません....」

次のような正確なパスに変更すると

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

もはや一般的ではありませんが、正常に動作します。

それが重要かどうかはわかりませんが、私のビジュアル スタジオ 2010 にはリシャープがありますが、ビジュアル スタジオ 2012 にはありません。

何が起こっているのですか?

4

1 に答える 1

6

$(SolutionDir)実際にはマクロだからです。マクロは VS2012 では使用できなくなりました。1 つの回避策は、環境変数 (カスタムまたは %PathToWebRoot%) を使用することです。環境変数は、AspNetDevelopmentServerHost でサポートされています。Environment.SetEnvironmentVariable を使用して、ClassInitializeAttribute メソッドで値を設定できます。

于 2012-10-02T10:16:34.780 に答える