2012-11-08 5 views

답변

18

나는 사용자의 PostBuildEvent 속성을 편집하는 프로젝트에 빌드 후 조치를 추가하는 방법에 대한 갈 길을 잘못 생각합니다. 권장되는 방법은 사용자 지정 작업을 프로젝트 파일로 가져온 MSBuild 대상에 넣는 것입니다. NuGet 2.5 현재, 패키지에 'build'폴더 (내용 및 도구와 동일한 수준)를 포함하고 {packageid} .targets 파일 또는 {packageid} .props 파일이 포함 된 경우 NuGet은 자동으로 가져 오기를 패키지를 설치할 때 프로젝트 파일.

예를 들어 MyNuGet이라는 패키지가 있습니다.

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="MyNuGetCustomTarget" AfterTargets="Build"> 
     <Message Importance="high" Text="Message from MyNuGetCustomTarget. Configuration: $(Configuration)" /> 
    </Target> 
</Project> 

이렇게하면 표준 빌드 대상 다음에 실행되도록 구성된 사용자 지정 대상이 만들어집니다. NuGet은 설치시 가져 오기 삽입을 처리하고 제거시이를 제거합니다.

+0

설치 후에 프로젝트에 추가 된 항목이 보이지 않지만 호출됩니다. 멋진 타이 – workabyte

6

.nuspec 파일 자체에는 없지만 nuspec을 사용하여 패키지에 추가 할 수있는 install.ps1 수 있습니다. 여기에 내가 뭘하는지입니다 (그것을 할 수있는 최선의 방법인지 모르겠어요하지만 작업을 수행) :

param($installPath, $toolsPath, $package, $project) 

$project.Properties | where { $_.Name -eq "PreBuildEvent" } | foreach { $_.Value = "copy `"`n`$(ProjectDir)Web.`$(ConfigurationName).config`" `"`$(ProjectDir)Web.config`"" } 
+0

재미있어 보이고, 나는 그것을 시험해 보겠습니다! –

+0

내가 해결할 수 있습니다. http://stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-install-ps1-in-nuget – IloveIniesta

8

이는 install.ps1에서 빌드 이벤트를 설정하는 약간 청소기 방법입니다 NuGet 패키지에서 파워 쉘 스크립트 :

$project.Properties.Item("PostBuildEvent").Value = "your build event here" 
+0

이 문제를 해결할 수 있습니까? http : //stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-ps1-in-nuget – IloveIniesta

관련 문제