2017-11-28 16 views
0

ここでの主なポイントは次のとおりです。私はナゲットパッケージの著者ではなく、ただ使っています。私の場合、それはセレンですが、それは何でもかまいません。ナゲットパッケージのネイティブ依存関係を出力ディレクトリにコピーします。

私のプロジェクトBaseTestには、Seleniumに基づくいくつかの基本機能があります。私もTest1,Test2、...、TestNこのBaseTestを参照しているプロジェクトがあります。

これで、msbuildがソリューションをビルドするときにネイティブ依存性がコピーされないため、chromedriver.exeとセレンがchromedriver is missingで失敗するため、テストを実行して失敗します。

ここでは、Seleniumパッケージを理論的にはこのBaseTestを消費するすべてのプロジェクトに追加することができます。あるいは、手動でXCOPYをこれらのプロジェクトすべてに行うことができます。両方の選択肢は醜いようです。

このような操作を実行する方法はありますか?


私は

しかし、それがないコンテンツとしてファイルを追加するには(例えば、this linkによる)の推移の依存関係のために働いていることを期待していませんでした。 csprojの変更点は次のとおりです。

<ItemGroup> 
    <Content Include="..\packages\Selenium.Chrome.WebDriver.2.33\driver\chromedriver.exe"> 
     <Link>chromedriver.exe</Link> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 

期待どおりに動作します。ありがとう@sotn

+1

chromedriver.dllまたはchromedriver.exe? – Marcel

+0

@marcelありがとう、投稿は編集されました –

答えて

1

あなたのプロジェクト(コードファイルのような)にchromedriver.dllを含めて、 "Copy to Output Directory"オプションを "Copy Always"/"Copy if Newer"に設定することができます。

dllをチェックインしたくない場合は、既存のリンクとして追加することもできます(既存アイテムの追加 - >リンクとして追加)。 "Copy to Output Directory"オプションを "Copy Always"/"新しい場合はコピーする "。

+0

imhoこれはさらに醜いです。私はいつも私のソース管理でdllをチェックすることを嫌いました – Alex

+0

@Alex私は実際にその答えを考えましたが、推移的な依存関係では動作しないと仮定しました。しかし、そうです。最後に、参照を追加する場合はソースコントロールに含めることはできません。投稿の追加を参照してください。 –

+0

@Alexネイティブdllで多くのオプションがありません。あなたは既存のリンクとして追加することができます.. – sotn

関連する問題