2017-11-28 7 views
0

여기에서 요점은 다음과 같습니다. Nuget 패키지의 저자가 아니며, 방금 사용하고 있습니다. 제 경우에는 셀레늄이지만 아무것도 될 수 없습니다.출력 디렉토리에 복사 할 Nuget 패키지의 고유 종속성을 만듭니다.

셀레늄을 기반으로하는 일부 기본 기능을 가진 BaseTest 프로젝트가 있습니다. 나 또한 Test1, Test2, ..., TestNBaseTest을 참조하는 프로젝트가 있습니다.

이제 테스트를 실행했지만 msbuild가 솔루션을 빌드 할 때 기본 종속성 chromedriver.exe 및 셀렌이 chromedriver is missing과 함께 실패하기 때문에 실패합니다.

이제 두 가지 옵션을 고려해야합니다. 이론적으로는 BaseTest을 소비하는 모든 프로젝트에 Selenium 패키지를 추가하거나이 프로젝트에 수동으로 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> 

예상대로 작동합니다. 감사합니다 @sln

+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