2017-10-16 7 views
0

nuget (버전 4.3.0.4406) 및 msbuild (버전 15.3.409.57025)에 문제가 있습니다. VS2017 클래스 라이브러리를 만드는 데 사용하고 있습니다. VS2017의 기능을 사용하면 성공적으로 (다른 솔루션에 설치할 수있는) 너겟 패키지를 만들 수 있습니다. 이제 너겟이 설치 될 때 실행되는 tools 폴더의 패키지에 install.ps1 스크립트를 추가하려고합니다. csproj 파일에서 VS2017 msbuild/nuget pack

은 내가 여러 대상 프레임 워크를 지정하고 : 나는이 작업을 수행하는 방법을 알아낼 수 없습니다

<TargetFrameworks>net45;net452</TargetFrameworks>

. 간단한 nuspec 파일을 생성하는 nuget -spec 명령을 사용하여 nuspec 파일을 만들었습니다./t : pack 및 /p:Nuspecfile=path.to.nuspec과 함께 msbuild 명령을 사용할 때 다음 오류가 발생합니다.

NuGet.Build.Tasks.Pack.targets : 오류 : 값은 null 또는 빈 문자열 일 수 없습니다.

문제없이 작동하는 다른 프로젝트 (VS2015 솔루션)의 nuspec 파일을 가지고 있으며 현재 사용중인 구조는 기본적으로 동일합니다. 누구든지 제가 할 수없는 일을 시도하고 있는지 알려주시겠습니까?

당신은 csproj 파일에 메타 데이터를 업데이트하여 모든 항목을 포장 할 수

답변

0

다음 PS1 파일 만 NuGet 패키지를 참조 할 packages.config를 사용하여 프로젝트를 실행하고 달성하는 다른 방법을 조사해야한다고

<ItemGroup> 
    <None Update="install.ps1" CopyToOutputDirectory="PreserveNewest" Pack="true" PackagePath="\tools" /> 
</ItemGroup> 

주 이제는 PackageReference이라는 스크립트로 수행하려는 작업이 대신 사용될 가능성이 큽니다.

+0

감사합니다. 나중에 나중에 시도해보고 나중에 작동하는 경우 다시 알려 드리겠습니다. 패키지를 사용하는 프로젝트는 packages.config를 사용하는 WPF 프로젝트입니다. 그럼 괜찮을거야. – Sam

+0

예, 향후 VS 버전이 프로젝트 마이그레이션을 시도하지 않는 한 (하지만 프로젝트 파일 수정 사항을 유지해야 함). 새로운 프로젝트는 패키지를 참조하는 새로운 방법을 사용할 수 있습니다. –

+0

나는 Martin의 제안을 시도했다. csproj 파일의 요소를 사용하여 하나의 대상 프레임 워크를 지정할 때만 작동하는 것 같습니다. 요소 (net452 만 지정)를 사용하면 결과 nuget 패키지에 tools 폴더가 포함되지 않습니다 .-(누구에게도이 특정 사례에 대한 해결책이 있습니까? – Sam