3

학습 할 수있는 간단한 MSBuild 파일이 있습니다. 여기Visual Studio 2012의 MSBuild 파일은 어떻게 사용합니까?

그것입니다

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Clean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup Label="Globals"> 
    <ProjectGuid>{D5A16164-962E-4A6D-9382-240F31AB6C50}</ProjectGuid> 
    </PropertyGroup> 
    <Target Name="Clean"> 
    <ItemGroup> 
     <BinFiles Include="bin\*.*" /> 
     <fff Include="f\*.*" /> 
    </ItemGroup> 
    <Delete Files="@(BinFiles)" /> 
    <Delete Files="@(fff)" /> 
    </Target> 
</Project> 

가 지금은 비주얼 스튜디오 솔루션이 포함하고 인터넷 보인다처럼 내가 testproject.msbuildproj을 명명 시도 비주얼 스튜디오 2012에서 "깨끗한"목표를 실행할 수 있도록하려면 "작품"을 제안하지만 작동하지 않습니다. clean 명령을 실행하면 "예기치 않은 오류"가 발생합니다.

프로젝트의 이름을 testproject.csproj으로 변경하면 컴파일 디렉토리 생성과 같이 직관적이지 않지만 실제로는 내 정리 명령이 올바르게 실행됩니다. 그러나 이것은 objbin/x86/debug 유형 디렉토리를 만들기 때문에 바람직하지 않습니다. Visual Studio에서도 레퍼런스를 드롭하기 때문에 바보처럼 보입니다.

Visual Studio의 일반 바닐라 MSBuild 프로젝트를 임의의 오류나 잘못된 가정없이 어떻게 사용할 수 있습니까?

참고 Visual Studio에서만이 문제가 발생합니다. 명령 줄에서 msbuild를 사용하면 완벽하게 작동합니다.

답변

2

csproj 파일을 열면 Visual Studio에서 bin/obj 폴더를 만듭니다. Build/Rebuild/Clean을 클릭하면 프로젝트 파일의 적절한 대상이 사용됩니다.

VS에서 이러한 폴더를 만들지 못하게 할 수는 있지만 적절한 속성을 설정하여 임시 폴더에서 만들도록 요청할 수 있습니다. 자세한 내용은 this MSDN article을 참조하십시오. 나는 보통 VS에서 MSBUILD 파일로 작업하는 약간 다른 접근 방식을 사용

<PropertyGroup> 
    <OutputPath>$(Temp)\bin</OutputPath> 
    <IntermediateOutputPath>$(Temp)\obj</IntermediateOutputPath> 
</PropertyGroup> 

:

    그래서 단계를 csproj에 프로젝트 이름을 변경하고, 프로젝트에 다음 줄을 추가 할 수 있습니다

  • 일반 빌드 csproj 파일을 내 빌드 프로젝트의 순수 컨테이너로 Import ... CSharp.targets 부분을 제거한 상태로 사용합니다.
  • 대상 및 논리, 모든 속성, "프로젝트에 포함"을 사용하는 XSLT 등 필요한 아티팩트가 포함 된 실제 빌드 파일을 추가하여 계층 구조를 관리하고 VS.Net에서 모든 파일을 변경할 수 있습니다.
  • 나는 csproj 파일에서 Build/Rebuild 타겟을 다시 정의합니다. 예를 들어 Build에는 최소 출력이 포함될 수 있으며 진단 중에는 다시 빌드됩니다. 이처럼

:

<Target Name="Build"> 
    <Exec Command="%windir%\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe Builds\build.proj /t:Build /v:m" /> 
</Target> 
<Target Name="Rebuild"> 
    <Exec Command="%windir%\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe Builds\build.proj /t:Build /v:d" /> 
</Target> 
+0

이 실제로 질문에 대답하지 않는 것 : 당신은 VS에서 MSBuild를 실행을 위해 설치를 제안했다 "어떻게 ..."하지만, 당신이 실행하는 방법 응답하지 않은 VS에서 MSBuild. – IAbstract

+0

@IAbstract downvote 주셔서 감사합니다. 만약 당신이 질문을주의 깊게 읽으면'프로젝트 이름을 testproject.csproj로 바꾼다면 실제로 내 clean 명령을 제대로 실행한다. 그러나 이것은 obj 및 bin/x86/debug 유형 디렉토리를 생성하기 때문에 바람직하지 않습니다. bin/obj 아티팩트없이 msbuild 프로젝트에서 Clean/Build/Rebuild를 실행하는 방법을 설명합니다. – Lanorkin