2012-01-30 2 views
3

간단한 클래스 라이브러리 프로젝트 (Class1)가 있으며이 솔루션에 대해 NuGet 패키지 복원이 활성화되었습니다.NuGet PackageRestore with msbuild 사용

그러면 restorepackages 작업을 .csproj 파일로 가져옵니다.

내가

C:>msbuild myproj.csproj /t:compile 

와 프로젝트를 컴파일 할 수 있습니다 그리고 내가 어떤 패키지를 추가하면 restorepackages 작업이 실패하게됩니다, 그러나

C:>msbuild myproj.csproj /t:restorepackages 

로 추가 패키지 전에 restorepackages 작업을 성공적으로 호출 할 수 있습니다 오류 3입니다.

NuGet 작업이 잘못된 작업 디렉터리로 호출 된 것으로 보이며 실제로 t를 제거하여 문제를 해결할 수 있습니다 그는 솔루션에 추가 된 NuGet.targets 파일의 workdir attribut를 사용합니다.

편집과 같은 작업 :

<Exec Command="$(RestoreCommand)" 
      LogStandardErrorAsError="true" 
      Condition="Exists('$(PackagesConfig)')" 
      WorkingDirectory="$(NuGetToolsPath)" /> 

및 작업 디렉토리를 제거는 :

<Exec Command="$(RestoreCommand)" 
      LogStandardErrorAsError="true" 
      Condition="Exists('$(PackagesConfig)')" 
      /> 

이 명령 줄은 MSBuild에서와 VS2010에서 모두 예상대로 작동하는 것 같다.

이 변경으로 인해 툴링이 손상 될 수 있다는 것을 아는 사람이 있습니까?

답변

1

"Package Restore's $(SolutionDir) goes too far"문제와 관련 될 수 있습니까?

프로젝트 파일에 주입 된 SolutionDir 속성을 확인 했습니까? 생성 된 상대 경로가 실제 솔루션 디렉토리를 가리 키지 않을 수도 있습니다.