15

C#dllプロジェクトを使用したVisualStudioソリューションがあります。このソリューションには、C#dllプロジェクトの出力を参照するテストプロジェクトもあります。参照されるプロジェクトdllは、Copy Local=trueに設定されています。

Visual Studioからこのテストを実行すると、正常に機能します。

しかし、MSBuildタスクから実行すると、何らかの理由でMSTestは参照されているC#dllをMSTest作業フォルダーにコピーしないため、テストは失敗します。奇妙なことに、参照されている他のすべてのライブラリがMSTest作業フォルダにコピーされます。そして、私が置く場合

 [DeploymentItem(@"PleaseCopyThis.dll")]

テストメソッドの前に、最後にMSTest作業フォルダーにコピーされ、テストは正常に実行されます。

しかし、なぜVisual Studioは、ソリューションの一部ではない参照されたdllのみをコピーし、参照されたプロジェクトdllをコピーしないのですか?

4

1 に答える 1

14

だから私はこの記事を見つけました:

mstest の問題のようです。

私はちょうど同じ問題を抱えていたので、それを修正する方法を考え出しました。私の場合、参照された dll は実際にはテストプロジェクトから直接使用されることはありませんでした (リフレクションを使用して使用されていましたが)。それを解決するために、次のコードでテストクラスを追加しました。

[AssemblyInitialize]
    public static void InitializeReferencedAssemblies(TestContext context)
    {
        ObjectInAssemblyX dummy = new ObjectInAssemblyX();
        ObjectInAssemblyY dummy2 = new ObjectInAssemblyY();
    }

現在は使用されているため、コピーされます

于 2012-09-26T11:19:44.220 に答える