2013-09-26 4 views
2

내 동료는 Visual Studio에서 솔루션을 만들고 프로젝트에서 자동으로 만든 NuGet 패키지를 만들 수 있다는 사실을 혼동합니다."BuildPackage"속성은 어디에 문서화되어 있습니까?

<BuildPackage>true</BuildPackage> 

내 동료들은이 기능을 신뢰하지 않고 그들이 어디 문서화를 참조하지 않기 때문에 그것을 채택하고 싶지 않은 : 내 csproj에 추가하기 때문에 물론 이것은 첫 번째 PropertyGroup에 다음 파일입니다 . 그들은 사용해서는 안되는 지원되지 않는 사용자 정의가 아닌가하는 두려움이 있습니다.

나는 그들이 그들의 결론에 착각했다고 생각하지만, 나는 문서가 없다는 것이 기괴하다는 것을 인정한다. 내가이 기능에 대해 알고있는 유일한 이유는 NuGet.targets 파일을 읽었 기 때문입니다. 실제로 문서를 찾는 것은 인터넷에서 내가 발견 한 유일한 것은 BuildPackage property을 언급하는 단일 게시물입니다.

우리가 이보다 더 잘 할 수 있을까요? 이 속성을 사용하는 방법과 사용법과 함께이 속성을 언급하는 문서는 어디에 있습니까? "사용법이 문서화되어 있지 않기 때문에 사용이 금지되어있다"는 말을 듣는 것은 부끄러운 일입니다.

답변

1

나는이 지형이 약간 오래된 것임을 알고 있지만이 재산을 이용하고 있으며 운명을 알기 원한다. 내가 찾은 "기능"작업을 "올바르게"만들 수있는 가장 쉬운 방법은 내 솔루션에서 "NuGet 패키지 복원 사용"을 사용하여 패키지를 출력 할 프로젝트에 속성을 추가하는 것입니다. 이 방법으로 Nuget.targets 가져 오기 및 $ (SolutionDir) 속성 정의를 내 솔루션의 각 프로젝트에 추가 할 필요가 없습니다. 이것은 AssemblyInfo 메타 데이터가 올바른 한. nuspec 파일을 유지할 필요가 없으므로 훌륭한 "기능"입니다. 지금까지 훌륭하게 작동했습니다 ... Nuget 2.7에서 "NuGet 패키지 복원 사용"방법은 쓸모없는 것으로 간주되어 사용되어서는 안된다는 것을 알게되었습니다. 그래서 ...이 "피처"가 사용되기로되어 있는지를 아는 것이 좋을 것입니다.

+0

이것은 답변이 적고 질문의 연장과 비슷합니다. –

+1

당신이 맞습니다, 나는 코멘트로 추가해야합니다. 나는 머리를 수치스러워한다. – user3723367

3

(아래 참조)/투명 문서화 프로젝트 파일에 BuildPackage 속성을 추가하여 패키지를 생성하지만 NuGet 팀 no longer recommends은 "MSBuild를-통합 패키지 복원"해당 속성에 대한 지원을 추가하는 메커니즘을 사용하여 :

NuGet 2.7 이전에는 MSBuild-Integrated Package Restore 접근 방식이 으로 사용되고 승격되었습니다. 이 방법은 계속 사용할 수 있지만 NuGet 팀은 자동 패키지 복원 및 명령 줄 패키지 복원을 대신 사용하도록 제안합니다.

NuGet Visual Studio 확장 3.0 버전에서 "NuGet 패키지 복원 사용"컨텍스트 메뉴 항목 will be removed이 이에 해당합니다.

"NuGet 패키지 복원 사용"을 수행하면 BuildPackage은 Visual Studio에서 솔루션에 추가하는 .nuget\NuGet.targets MSBuild 파일에 정의 된 대상입니다.

<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites"> 
    <Exec Command="$(BuildCommand)" 
      Condition=" '$(OS)' != 'Windows_NT' " /> 

    <Exec Command="$(BuildCommand)" 
      LogStandardErrorAsError="true" 
      Condition=" '$(OS)' == 'Windows_NT' " /> 
</Target> 

Exec 작업은 cmd.exe를 호출합니다.

<BuildCommand> 
$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols 
</BuildCommand> 

$(NuGetCommand).nuget\NuGet.exe로 평가됩니다 솔루션 디렉토리 내 : $(BuildCommand)은 동일한 파일에 정의 된 속성입니다.

앞으로 이러한 msbuild 노드를 자동으로 추가 할 수는 없지만 직접 프로젝트에 추가하거나 다른 방법을 사용하여 정확히 동일한 (완전히 지원되는) 명령 줄 nuget pack을 실행할 수 있습니다.

관련 문제