使nuget包本机依赖项复制到输出目录中

时间:2017-11-28 13:02:40

标签: c# .net selenium msbuild nuget

这里的要点是:我不是nuget包的作者,我只是使用它。就我而言,它是Selenium,但它可能是任何东西。

我的项目BaseTest有一些基于Selenium的基本功能。我还有Test1Test2,...,TestN项目参与此BaseTest

现在我运行测试并且它们失败了,因为当msbuild构建解决方案时,它不会复制本机依赖项chromedriver.exe,而selenium会因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 个答案:

答案 0 :(得分:1)

您可以将chromedriver.dll包含在项目中(如代码文件),并将其设置为“复制到输出目录”选项为“始终复制”/“如果更新则复制”。

如果您不想签入dll,可以将其添加为现有链接(添加现有项目 - >添加为链接),然后将“复制到输出目录”选项应用于“始终复制”/“复制如果更新“。