这里的要点是:我不是nuget包的作者,我只是使用它。就我而言,它是Selenium,但它可能是任何东西。
我的项目BaseTest
有一些基于Selenium的基本功能。我还有Test1
,Test2
,...,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
答案 0 :(得分:1)
您可以将chromedriver.dll包含在项目中(如代码文件),并将其设置为“复制到输出目录”选项为“始终复制”/“如果更新则复制”。
如果您不想签入dll,可以将其添加为现有链接(添加现有项目 - >添加为链接),然后将“复制到输出目录”选项应用于“始终复制”/“复制如果更新“。