2012-08-02 2 views
10

MSBuild 파일에서 MSBuildTasks를 참조하려고하는데 MSBuildTasks에 NuGet을 사용할 때이 작업을 수행하는 방법이 확실하지 않습니다.Nuget 패키지의 MSBuildTasks를 참조하십시오.

기준은 MSI 파일을 사용하여 MSBuildTasks를 설치 한 경우

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 

을 사용했다. 그러나 NuGet에서 설치하면 버전이 포함 된 하위 폴더에 저장되므로 MSBuildTasks를 업그레이드하면 빌드 파일의 경로가 손상됩니다. NuGet을 통해 설치된 MSBuildTasks를 참조하는 가장 좋은 방법은 무엇입니까?

답변

6

MSBuildTasks 버전 1.4.0.45를 사용하여 resourcelib, 에 대해 최근에 이것을 설정했습니다. 이 버전에서 프로젝트에 추가하면 DLL이 "Build"하위 디렉토리에 위치하게되어 체크 인해야합니다. 자동 다운로드를 시도했지만 프로젝트 파일에서 참조되는 경우 거기에서 시작하십시오. 이 명령 줄에서 MSBuild를 사용하여 빌드 할 수 있도록 여기에 MSBuildProjectDirectory

<PropertyGroup> 
    <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Build</MSBuildCommunityTasksPath> 
</PropertyGroup> 
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/> 

를 사용하는 : 프로젝트에 추가하려면

, 나는 다음과 같은 코드를 사용했다.

+3

이 답변은 매우 도움이되었지만 NuGet이 대상 파일을 저장하는 디렉토리는 현재 $ (SolutionDir) \. build'라는 것을 알았습니다. 따라서 위의 설정이 작동하지 않으면 ' $ (SolutionDir) \. build' – providencemac

+2

'.build' 폴더를 추가 한 NuGet 패키지의 PowerShell 스크립트가 버전 1.5부터 제거되었지만 '시작하기' '가이드는 여전히 그것을 사용하는 것이 좋습니다. 나는 [문제] (https://github.com/loresoft/msbuildtasks/issues/258)를 제기했습니다. – Neo

5

누군가 다른 사람이이 문제에 다시 직면했을 때를 대비하여 여기에 던져주세요. NuGet을 통해 MSBuildCommunityTasks를 설치하면 .build 폴더가 솔루션에 추가되어 소스 코드로 체크인하는 것이 좋습니다. 그러나 MSBuild.Community.Tasks.targets 파일은 올바르지 않은 c : \ Program Files (x86) 폴더를 가리키는 <MSBuildCommunityTasksPath> 요소를 가지고 있습니다. 이 폴더는 MSI를 사용하여 MsBuildCommunityTasks를 설치할 때 유효합니다. 솔루션의 패키지 폴더에 MsBuildCommunityTasks를 설치하는 Nuget의 경우에는 유효하지 않습니다. 그래서 .targets 파일을 수정 결국,과를 가리 키도록 MSBuildCommunityTasksPath을 변경 :

<MSBuildCommunityTasksPath>$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools</MSBuildCommunityTasksPath> 
아직

없는 주사위입니다. 그래서 마지막으로, 난 그냥 웹 프로젝트 파일 편집,이에 MSBuildCommunityTasks에 대한 가져 오기 요소를 변경 : 직접적 패키지 폴더에 .Targets 파일을 찾을 수있는 프로젝트를 알 수 있기 때문에

<Import Project="$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools\MSBuild.Community.Tasks.Targets"/> 

이, 작동합니다. MSBuildTasks 버전을 업그레이드 할 경우 Import 요소를 변경해야한다는 점에 유의하십시오. 저는 MsBuild 멍청한 놈입니다. 누군가가 이것을 자동화하는 방법을 말해 줄 수 있다면, 좋을 것입니다!

+0

왜''가 없습니까? 당신의 대답에 대한 감독. – HankCa

관련 문제