2017-03-17 1 views
4

.NET 코어 csproj 응용 프로그램에서 PhantomJS NuGet package을 사용하려고합니다. 그러나 NuGet에 대해 새로운 PackageReference 구문을 사용할 수 없다고 생각합니다..NET Core csproj에서 참조 된 NuGet 패키지에서 ouptut 디렉토리로 파일을 복사하는 방법은 무엇입니까?

나는이 같은 PhantomJS 패키지를 참조 할 때 : 나는 dotnet build을 실행할 때

<PackageReference Include="PhantomJS" Version="2.1.1"> 
    <IncludeAssets>all</IncludeAssets> 
</PackageReference> 

그것은 아무것도하지 않습니다.

PhantomJS 패키지에서 제공하는 바이너리 파일을 사용할 수 있도록 PhantomJS 패키지 내의 파일을 출력 디렉토리 (또는 프로젝트의 모든 위치)에 복사해야합니다.

PhantomJS NuGet 패키지의 내용을 MSBuild가있는 출력 디렉토리로 복사하는 다른 방법이 있습니까?

답변

3

NuGet의 <PackageReference> 구문은 구문과 같이 전이 종속성을 사용합니다. 같은 규칙이 적용됩니다. packages.config과 최신 구문 사이에서 작동하는 것과 작동하지 않는 것에 대해 설명한 NuGet v3을 참조하십시오. 구체적으로

install.ps1 또는 uninstall.ps1을 사용하여 작동하지 않을 수 있습니다. 이 파일들은 packages.config를 사용할 때 실행되지만 v3에서는 무시됩니다. 따라서 패키지를 실행하지 않고도 사용할 수 있어야합니다. Init.ps1 여전히 파일을 출력 디렉터리에 복사 얻으려면 NuGet 3.

에서 실행의 PhantomJS NuGet 패키지는 contentFiles를 사용하도록 변경해야합니다.

+1

감사합니다. 정말 불행하다고 생각합니다. [버그 보고서를 열었습니다] (https://github.com/NuGet/Home/issues/4837). 나는 모든 패키지가 그들의 nuspec을 바꾸기를 기대하는 것이 현실적이지 않다고 생각한다. PackageReference가 주어진 디렉토리 나 파일을 복사하는 기능을 가진다면 더 좋을 것이다. 출력 디렉토리. 나는 이것을 계속 열어두고, 어쨌든 이것을 할 수있는 msbuild에는 여러가지 트릭이있다. – Ciantic

+2

누구나 contentFiles 사용 방법에 대한 예제 nuspec 파일이 있습니까? –

+2

다음은 MSBuild의 repo 예제입니다. https://github.com/Microsoft/msbuild/blob/6851538897f5d7b08024a6d8435bc44be5869e53/build/NuGetPackages/Microsoft.Build.Runtime.nuspec#L30-L32 –

관련 문제